在传统的SQL
,用户可以像使用通配符表功能TABLE_DATE_RANGE
,TABLE_QUERY
和TABLE_DATE_RANGE_STRICT
.
标准有类似的功能SQL
吗?
Pav*_*ara 14
在旧SQL中,用户可以使用表通配符函数从数据集中的表子集引用数据.在标准SQL中,用户可以使用相同的结果UNION ALL
.但是,当用户希望使用例如日期范围(使用旧版SQL 支持TABLE_DATE_RANGE
和TABLE_DATE_RANGE_STRICT
旧版SQL)或其他复杂条件(TABLE_QUERY
旧版SQL 支持)动态确定表集时,此方法可能不方便.使用标准SQL,BigQuery提供了与下面描述的等价物.
TABLE_QUERY
可以使用标准SQL重写以下使用通配符函数的旧SQL查询.
旧版SQL查询(使用TABLE_QUERY
):
SELECT SUM(value1)
FROM TABLE_QUERY([myproject:mydataset],"table_id = 'mydailytable_20150105' OR
table_id = 'mydailytable_20150106' OR table_id = 'maydailytable_20150110'")
GROUP BY value2;
Run Code Online (Sandbox Code Playgroud)
旧版SQL查询(使用TABLE_DATE_RANGE
):
SELECT SUM(value1)
FROM TABLE_DATE_RANGE([myproject:mydataset], TIMESTAMP("2015-01-05"), TIMESTAMP("2015-01-10"))
Run Code Online (Sandbox Code Playgroud)
标准SQL查询:
SELECT SUM(value1)
FROM `myproject.mydataset.mydailytable_*`
WHERE _TABLE_SUFFIX = '20150105'
OR _TABLE_SUFFIX = '20150106'
OR _TABLE_SUFFIX = '20150110'
GROUP BY value2;
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,通配符表myproject.mydataset.mydailytable_*
匹配数据集中myproject.mydataset
以所有table_id
开头的所有表mydailytable_
.例如,要匹配数据集中的所有表,用户可以使用通配符的空前缀.因此,myproject.mydataset.*
匹配数据集中的所有表.
由于*
是特殊字符,因此在查询中使用通配符表名称时必须引用它们.
该_TABLE_SUFFIX
伪列:
该_TABLE_SUFFIX
伪列有STRING类型,可用于就像任何其他列.它是保留的列名,因此在将其用作SELECT列表的一部分时需要使用别名.
此功能的官方文档可在此处获得:
https://cloud.google.com/bigquery/docs/wildcard-tables https://cloud.google.com/bigquery/docs/querying-wildcard-tables
归档时间: |
|
查看次数: |
5093 次 |
最近记录: |