如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?

How can I query a Bigtable column value in BigQuery standard SQL?

我正在尝试在 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 中运行不正常。

仅选择 rowkey 在#standardSQL 中有效:

#standardSQL
SELECT
  rowkey
FROM
  mycategory.mytable
WHERE
  rowkey LIKE '123%'

我如何 select 标准 SQL 中的列值,正如此 post 中的第一个查询尝试做的那样?

问题是 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 的更多信息。