通过 Cloud Datalab 加入 Google BigQuery
Posted
技术标签:
【中文标题】通过 Cloud Datalab 加入 Google BigQuery【英文标题】:Join in Google BigQuery via Cloud Datalab 【发布时间】:2017-02-19 23:59:14 【问题描述】:我试图在 Google BigQuery 中对来自两个不同表(其中一个是视图)的两列进行 JOIN。我尝试了很多方法,但最常收到此错误:
invalidQuery: 2.1 - 0.0: JOIN cannot be applied directly to a table union or to a table wildcard function. Consider wrapping the table union or table wildcard function in a subquery (e.g., SELECT *).
这是我的 SQL(旧版)查询:
SELECT
blp_today.beta_key,
blp_today.px_last,
blp_today.eqy_weighted_avg_px,
blp_today.created_date,
blp_today.security_ticker,
ciq_company_stg.ticker,
ciq_company_stg.ciq
FROM
[fcm-dw:acquisition_bloomberg.blp_today],
[fcm-dw:acquisition_ciq]
JOIN
blp_today.security_ticker AS ticker
ON
blp_today.security_ticker = ciq_company_stg.ticker
LIMIT 1000
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我想你要么想要这样的东西:
SELECT * FROM(SELECT
beta_key,
px_last,
eqy_weighted_avg_px,
created_date,
security_ticker,
FROM
[fcm-dw:acquisition_bloomberg.blp_today],
[fcm-dw:acquisition_ciq] ) as a
JOIN
blp_today.security_ticker AS ticker
ON
a.security_ticker = ciq_company_stg.ticker
LIMIT 1000
//edit:我之前有点错过了您正在加入的表(在您的 join 语句之后)实际上似乎不是一个表。您是否尝试加入或合并这两个表: [fcm-dw:acquisition_bloomberg.blp_today] 和 [fcm-dw:acquisition_ciq] ?后者甚至是一张桌子吗?您的代码似乎表明还有另一个表名为:[fcm-dw:acquisition_ciq.ciq_company_stg]?
【讨论】:
后者实际上是同一张表的视图,不过这有帮助,谢谢。【参考方案2】:首先将您的联合包装到子选择中,然后加入结果
select ...
FROM
(select * from
[fcm-dw:acquisition_bloomberg.blp_today],
[fcm-dw:acquisition_ciq] ) t
JOIN
blp_today.security_ticker AS ticker
【讨论】:
以上是关于通过 Cloud Datalab 加入 Google BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
如何使用R将Google Cloud Datalab输出保存到BigQuery中
如何在我的本地 linux 服务器上运行 google-cloud-datalab?
删除 Google Cloud Datalab SQL 模块参数中的引号?