gpt4 book ai didi

python - Google BigQuery API,如何设置destinationTable的字段类型?

转载 作者:行者123 更新时间:2023-12-01 04:52:56 24 4
gpt4 key购买 nike

我们正在使用 BigQuery 的 Python API,特别是 jobs资源,对现有 BigQuery 表运行查询,并通过将结果数据集插入新的 BigQuery 表 (destinationTable) 来导出结果。

有没有办法同时更新新创建的表的架构并设置特定的数据类型?默认情况下,所有字段都设置为“字符串”类型,但我们需要其中一个字段为“时间戳”。

最佳答案

为了设置目标表的字段类型,您需要在查询中转换为新类型,因为结果集描述了目标表中的新字段类型。

  1. 您需要使用简单的 CAST 函数来获得数字/日期等。

SELECT TIMESTAMP(t) AS t FROM (SELECT "2015-01-01 00:00:00" t)

  • 最近引入了记录类型的“展开”功能,因此您现在可以将整个记录传输到另一个表,同时保留 RECORD 结构 - 为此,您需要设置目标表(以及所需的写入配置) ),设置allowLargeResults = TRUE,然后设置Flatten Results = FALSE(请参阅 here 中的最后一篇文章,其中对此进行了解释)。然后您可以运行这样的查询将整个记录传输到目标表:
  • SELECT cell.* FROM publicdata:samples.trigrams LIMIT 0;

    我使用的是 publicdata:samples 数据集中的表,您也可以使用该数据集,因此您也可以运行这些测试。在上面的查询中,“cell”是一条记录,如果您设置 Flatten Results=FALSE,您将看到“cell”在目标表中仍然是一条 RECORD。

  • 将数据传输到目标表时,您可以从记录中删除一些字段。下面是演示这一点的查询(同样,您需要使用 Flatten Results=FALSE 来运行它):
  • SELECT cell.value, cell.volume_count FROM publicdata:samples.trigrams LIMIT 0;

    运行上述查询后,“单元格”记录将仅包含您指定的字段。

  • 将数据传输到目标表时,您可以重命名记录中的现有字段:
  • SELECT cell.value AS cell.newvalue FROM publicdata:samples.trigrams LIMIT 0;

  • 遗憾的是,目前无法向记录添加字段,例如,以下查询将在“actor_attributes”和“repository”记录之外创建“url”。
  • SELECT
    actor_attributes.blog,
    repository.created_at,
    repository.url AS actor_attributes.url
    FROM publicdata:samples.github_nested
    LIMIT 0;

    因此,为了向记录添加字段,您需要导出数据,在 BigQuery 外部对其进行处理,然后使用新架构将其加载回来。

    关于python - Google BigQuery API,如何设置destinationTable的字段类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28060942/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com