首页 > 解决方案 > 如何避免 Big Query 在 JSON 中嵌套日期值?

问题描述

我将标准 SQL 与 Big Query 一起使用,一切正常,但我的日期是嵌套结构,我不知道 Big Query 为什么要这样做。

这是我的查询:

SELECT
  DATETIME(salesData.date_utc, "EST") AS DateEST,
  salesData.serial_no AS MachineID
FROM
  sales.sales_all AS salesData
WHERE salesData.date_utc > "2018-05-26T05:00:00" AND salesData.date_utc 
< "2018-05-27T04:59:59"
ORDER BY salesData.date_utc DESC

当我将结果下载为 JSON 时,一切都很好:

{"DateEST":"2018-05-26T23:57:58","MachineID":"1708FB0000009-B"}
{"DateEST":"2018-05-26T23:52:07","MachineID":"1710FB0000034-B"}

但是,如果我使用 Google Cloud Functions 并提取数据,则会生成嵌套的 JSON。

[
    {
        "DateEST": {
            "value": "2018-05-26T23:57:58"
        },
        "MachineID": "1708FB0000009-B"
    }, ...

这是我的云函数代码的一部分:

const options = {
    query: sqlQuery,
    useLegacySql: false, // Use standard SQL syntax for queries.
};

bigquery
    .query(options)
    .then(results => {
      const rows = results[0];
      response.json(rows);
    })
    .catch(err => {
      console.error('ERROR:', err);
      response.send(500);
    });

标签: google-bigquery

解决方案


通过将DATETIME对象转换为string

CAST(DATETIME(salesData.date_utc, "EST") as STRING) as DateEST

推荐阅读