我们使用BigQuery的Python API,特别是jobs资源,在现有BigQuery表上运行查询,并通过将结果数据集插入新的BigQuery表(destinationTable)来导出结果。
有没有办法同时更新新创建的表的架构并设置特定的数据类型?默认情况下,所有字段都设置为“字符串”类型,但我们需要其中一个字段为“timestamp”。
答案 0 :(得分:2)
为了将目标表的字段类型设置为需要CAST到查询中的新类型,因为结果集描述了目标表中的新字段类型。
SELECT TIMESTAMP(t)AS t FROM(选择“2015-01-01 00:00:00”t)
SELECT cell。* FROM publicdata:samples.trigrams LIMIT 0;
我正在使用来自publicdata:samples数据集的表格,您也可以使用这些表格,因此您也可以运行这些测试。在上面的查询中,'cell'是一个记录,如果你设置Flatten Results = FALSE,你会看到'cell'仍然是dest表中的RECORD。
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.blog,
repository.created_at,
repository.url AS actor_attributes.url
FROM publicdata:samples.github_nested
限制0;
因此,为了向记录添加字段,您需要导出数据,在BigQuery之外处理它,然后使用新架构加载它。
答案 1 :(得分:0)
将自动设置目标表的字段类型。如果需要将字符串转换为整数或时间戳,请在查询中执行此操作。
这将创建一个包含一列(字符串)的目标表:
SELECT x FROM (SELECT "1" x)
这将创建一个包含一列(整数)的目标表:
SELECT INTEGER(x) AS x FROM (SELECT "1" x)
这将创建一个包含一列(时间戳)的目标表:
SELECT TIMESTAMP(x) AS x FROM (SELECT "2015-10-21 04:29:00" x)