【问题标题】:How to use GCP REST API to execute a query如何使用 GCP REST API 执行查询
【发布时间】:2020-12-23 08:33:14
【问题描述】:

在 GCP、Big Query 编辑器 https://console.cloud.google.com/bigquery 中,我可以像这样执行我的查询:

#standardSQL
SELECT COUNT(*) AS num_downloads
FROM `the-psf.pypi.file_downloads`
WHERE file.project = 'pytest'
  -- Only query the last 30 days of history
  AND DATE(timestamp)
    BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
    AND CURRENT_DATE()

但是当我尝试使用 REST API 执行查询时,即 去https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query 并点击“试用”,并将其放入请求正文中:

{
  "query": "    #standardSQL
    SELECT COUNT(*) AS num_downloads
    FROM `the-psf.pypi.file_downloads`
    WHERE file.project = 'pytest'
      -- Only query the last 30 days of history
      AND DATE(timestamp)
        BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
        AND CURRENT_DATE()"
}

我收到错误消息,例如“选择带下划线的部分以查看更多详细信息。 您的上述必需参数值无效或缺失。” 那么如何解决这个问题才能使用 Query REST API?

【问题讨论】:

标签: google-cloud-platform google-bigquery


【解决方案1】:

JSON 规范不支持多行字符串。你需要压扁你的字符串

{
  "query": "#standardSQL \n SELECT COUNT(*) AS num_downloads FROM `the-psf.pypi.file_downloads` WHERE file.project = 'pytest' \n -- Only query the last 30 days of history \n AND DATE(timestamp) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) AND CURRENT_DATE()"
}

您还需要添加 \n 来隔离 cmets(标准 SQL 并且您在查询中间添加注释)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多