【问题标题】:BigQuery Query from terminal来自终端的 BigQuery 查询
【发布时间】:2022-01-27 05:43:35
【问题描述】:

我有一个来自日志记录和 bigquery 之间的接收器的多表,我正在尝试从我的终端执行此查询以在本地获取结果(用于导出它,因为我无法添加新的 SA 或其他的东西)。 所以这是查询:

bq query --use_legacy_sql=true \
'
  SELECT
    timestamp AS Time,
    logName AS Log,
    textPayload AS Message
  FROM (TABLE_DATE_RANGE([mytable.stdout_], DATE_ADD(CURRENT_TIMESTAMP(), -1, 'MONTH'), CURRENT_TIMESTAMP()))
'

它在 GoogleCloud 网站上运行良好,但不幸的是,当我尝试在终端中执行它时,它给了我这个错误:

查询字符串中的错误:错误处理作业“mytable_0000017e01909804_1”:时间戳评估错误:(L2:1):SELECT 查询引用非常量字段或使用聚合函数或具有 WHERE、OMIT IF、GROUP 中的一项或多项 BY、ORDER BY 子句必须有 FROM 子句。

我该如何解决?

【问题讨论】:

  • 如果此答案对您有所帮助,您可以投票或接受该答案。这可以帮助遇到同样问题的未来用户。

标签: google-cloud-platform terminal google-bigquery


【解决方案1】:

BigQuery 支持两种 SQL 语言:StandarSQL 和 LegacySQL。在本例中,我使用的是 StandarSQL。为了使用这种语言,我将此标志设置为 false use_legacy_sql=false,因为某些命令和语法彼此不同(StandarSQL 和 LegacySQL)。

在这里,你可以看到更多关于这个标志的information

bq query --use_legacy_sql=false \
'
 SELECT  TABLE_DATE_RANGE([myproject:mydataset.people],
                   DATE_ADD(DATE (CAST(DATE(CURRENT_TIMESTAMP) AS DATE))),
                   CURRENT_TIMESTAMP)
'

您可以在documentation 看到 BigQuery 支持的旧版命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2012-07-06
    • 2020-01-23
    • 2014-06-20
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多