BigQuery 表通配符函数别名?

Posted

技术标签:

【中文标题】BigQuery 表通配符函数别名?【英文标题】:BigQuery Table Wildcard Function Aliases? 【发布时间】:2014-06-10 21:01:13 【问题描述】:

根据文档here,我应该能够引用表通配符函数作为别名:

...
FROM
  [project_name:]datasetId.tableId |
  (subselect_clause) |
  table wildcard function
[[AS] alias]
...

但是,当我尝试这样做时,事情失败了:

bq query "SELECT * FROM TABLE_QUERY(my_data, \"TIMESTAMP(table_id) BETWEEN TIMESTAMP('2014-05-21') AND TIMESTAMP('2014-06-10')\") AS blah WHERE blah.foo = 5 LIMIT 30"
Waiting on bqjob_some_id ... (0s) Current status: DONE
BigQuery error in query operation: Error processing job 'some_id': Field 'blah.foo' not found in table 'mydata.20140521'; did you mean 'foo2'?

我想对通配符函数返回的数据进行连接,将其视为单个表,因此别名对我来说非常重要。想法?

【问题讨论】:

【参考方案1】:

您链接到的页面确实提到“不要将别名与表通配符函数一起使用。”

你可以试试

SELECT * 
FROM (SELECT * FROM TABLE_QUERY(--insert query here--)) AS blah 
WHERE blah.foo = 5 LIMIT 30"

【讨论】:

如果“清楚地”你的意思是“作为一个脚注与它上面的巨大 FROM 语法相矛盾,那么是的。无论如何,谢谢你的回答。这就是我最终要做的,但让我的 SQL 看起来真的丑陋。 我并没有试图居高临下。对不起,听起来是这样的。我已经编辑了帖子。 不用担心。我刚刚遇到了 BigQuery 的许多不直观的行为,所以我已经对整件事感到恼火。无论如何,再次感谢您的回答。

以上是关于BigQuery 表通配符函数别名?的主要内容,如果未能解决你的问题,请参考以下文章

Google BigQuery - 将通配符表查询与日期分区表一起使用?

BigQuery 通配符表 - 有啥限制?

带有日期列的 BigQuery 标准 SQL 表通配符

在 BigQuery 中将数据插入/创建分片/通配符表

尚不支持 BigQuery、非分区表上的通配符表和基于字段的分区表

bigquery 通配符表查询不允许选择某些字段