如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?
Posted
技术标签:
【中文标题】如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?【英文标题】:How can I query a Bigtable column value in BigQuery standard SQL? 【发布时间】:2018-12-12 01:15:33 【问题描述】:我正在尝试使用 BigQuery 中的标准 SQL 查询 Bigtable 列值:
#standardSQL
SELECT
default.blah.cell.value
FROM
mycategory.mytable
WHERE
rowkey LIKE '123%'
我收到错误:
Error: Syntax error: Unexpected keyword DEFAULT at [3:3]
上述查询在旧版 SQL 中运行良好,但在标准 SQL 中则不行。
仅选择行键是否在#standardSQL 中起作用:
#standardSQL
SELECT
rowkey
FROM
mycategory.mytable
WHERE
rowkey LIKE '123%'
如何在标准 SQL 中选择列值,就像本文中的第一个查询尝试做的那样?
【问题讨论】:
【参考方案1】:问题在于DEFAULT
是reserved keyword,因此您需要使用反引号将其转义。例如:
#standardSQL
SELECT
`default`.blah.cell.value
FROM
mycategory.mytable
WHERE
rowkey LIKE '123%'
编辑:由于cell
是一个数组类型字段,如果目标是从其中读取值作为数组,您应该使用ARRAY
函数:
#standardSQL
SELECT
ARRAY(SELECT value FROM UNNEST(`default`.blah.cell)) AS values
FROM
mycategory.mytable
WHERE
rowkey LIKE '123%'
您可以在文档中找到有关working with arrays 的更多信息。
【讨论】:
谢谢!这照顾了default
!现在我收到此错误:Error: Cannot access field value on a value with type ARRAY<STRUCT<timestamp TIMESTAMP, value BYTES>> at [3:25]
不胜感激任何建议
添加了如何表达查询的示例。不过,如果您还有其他问题,请提交新的 *** 帖子。以上是关于如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery 中使用标准 SQL 查询 GA RealtimeView?
如果标准 SQL 不提供 _PARTITIONTIME 字段,我如何在 BigQuery 中查询流缓冲区