【问题标题】:How can I query a Bigtable column value in BigQuery standard SQL?如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?
【发布时间】: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 中选择列值,就像本文中的第一个查询尝试做的那样?

【问题讨论】:

    标签: google-bigquery google-cloud-bigtable


    【解决方案1】:

    问题在于DEFAULTreserved 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] 不胜感激任何建议
    • 添加了如何表达查询的示例。不过,如果您还有其他问题,请提交新的 StackOverflow 帖子。
    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2018-12-11
    • 2016-12-17
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多