【问题标题】:How to add timestamp column when loading file to table将文件加载到表时如何添加时间戳列
【发布时间】:2014-11-06 10:53:59
【问题描述】:

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

我想在表中添加一个时间戳列,以便知道插入时间 记录在案。我正在以追加模式加载,因此并非所有记录都同时插入。

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

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

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

【问题讨论】:

  • 嗨,你找到这个答案了吗?如果是的话,你能分享一下吗?谢谢,斯里。

标签: google-bigquery


【解决方案1】:

您可以使用 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】:

    如果您愿意创建一个新表来存放这些信息,我建议使用以下设置创建一个新表: table with _PARTITIONTIME field based on insertion

    如果您使用默认的 _PARTITIONTIME 分区字段创建表,它会根据插入时间完全按照您的要求进行操作

    【讨论】:

    • 但分区值将仅是日期级别而不是时间戳。您只能知道摄取行的日期,但不能知道时间戳或纪元时间。这不是我要求的:) 但感谢您提供帮助!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 2011-02-05
      • 2023-03-31
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多