如何在将文件加载到表时添加时间戳列

时间:2014-09-12 09:41:18

标签: google-bigquery

我正在将批处理文件加载到表中。

我想在表格中添加一个时间戳列,以便了解插入时间 在记录上。我在追加模式下加载,因此并非所有记录都同时插入。

不幸的是,我在大查询中找不到方法。将文件加载到表格时,我没有找到添加填充插入附加列的选项。我只是想在我的代码中计算时间戳,并将其作为所有插入过程的常量字段。

我现在正在做的解决方案是加载到临时表,然后将表+新时间戳字段查询到目标表中。它有效,但它是另一个步骤,我有多个加载,由于另一步的延迟,整个过程需要太多时间。

有人知道只有一步的另一种解决方案吗?

3 个答案:

答案 0 :(得分:0)

这是https://code.google.com/p/google-bigquery/issues/list的一个很棒的功能请求。不幸的是,今天没有自动化的方法。我喜欢你这样做的方式:)

答案 1 :(得分:0)

您可以使用Pandas数据框添加时间戳列/值:

from datetime import datetime
import pandas as pd
from google.cloud import bigquery

insertDate = datetime.utcnow()

bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset("dataset-name").table("table-name")

dataFrame = pd.read_json("file.json")
dataFrame['insert_date'] = insertDate

bigqueryJob = bigqueryClient.load_table_from_dataframe(dataFrame, tableRef)
bigqueryJob.result()

答案 2 :(得分:-1)

如果您愿意创建一个新表来容纳此信息,建议您使用以下设置来创建新表: table with _PARTITIONTIME field based on insertion

如果您使用默认的_PARTITIONTIME分区字段创建表,则它会根据插入时间完全满足您的要求