本页面介绍了如何针对列式数据运行查询。
查询列式数据
@{scan_method=columnar} 查询提示可让查询读取列式数据。您可以在语句级层或表级层设置 scan_method 提示。
例如,您可以使用以下查询从 Singers 和 Messages 表中读取列式数据:
@{scan_method=columnar} SELECT COUNT(*) FROM Singers;SELECT COUNT(*) FROM Singers @{scan_method=columnar};@{scan_method=columnar} SELECT m.MsgBlob FROM Messages WHERE m.id='1234';
使用 BigQuery 联合查询查询 Spanner 列式数据
如需从 BigQuery 读取 Spanner 列式数据,您可以创建外部数据集或使用 EXTERNAL_QUERY 函数。
查询外部数据集时,如果列式数据可用且适合您的查询,系统会自动使用列式数据。
如果您使用 EXTERNAL_QUERY 函数,请在嵌套的 Spanner 查询中添加 @{scan_method=columnar} 提示。
在以下示例中:
EXTERNAL_QUERY的第一个参数指定外部连接和数据集my-project.us.albums。- 第二个参数是一个 SQL 查询,用于从
AlbumInfo表中选择MarketingBudget小于 500,000 的MarketingBudget。 @{scan_method=columnar}提示可优化外部查询以进行列式扫描。- 外部
SELECT语句用于计算外部查询返回的MarketingBudget值的总和。 AS total_marketing_spend子句为计算出的总和分配别名。
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
EXTERNAL_QUERY(
'my-project.us.albums',
'@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');