我正在将批处理文件加载到表中。
我想在表格中添加一个时间戳列,以便了解插入时间 在记录上。我在追加模式下加载,因此并非所有记录都同时插入。
不幸的是,我在大查询中找不到方法。将文件加载到表格时,我没有找到添加填充插入附加列的选项。我只是想在我的代码中计算时间戳,并将其作为所有插入过程的常量字段。
我现在正在做的解决方案是加载到临时表,然后将表+新时间戳字段查询到目标表中。它有效,但它是另一个步骤,我有多个加载,由于另一步的延迟,整个过程需要太多时间。
有人知道只有一步的另一种解决方案吗?
答案 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分区字段创建表,则它会根据插入时间完全满足您的要求