【问题标题】:How do I skip header row using Python glcoud.bigquery client?如何使用 Python gcloud.bigquery 客户端跳过标题行?
【发布时间】:2017-02-08 08:16:12
【问题描述】:

我有一个 csv 格式的每日 GCP 结算导出文件,其中包含 GCP 结算详细信息。此导出包含标题行。我已经按如下方式设置了加载作业(总结):

from google.cloud import bigquery
job = client.load_table_from_storage(job_name, dest_table, source_gs_file)
job.source_format = 'CSV'
job.skipLeadingRows=1
job.begin()

此作业产生错误:

无法将“开始时间”解析为时间戳。所需格式为 YYYY-MM-DD HH:MM[:SS[.SSSSSS]]

此错误表示即使我指定了 skipLeadingRows=1,它仍在尝试解析标题行。我在这里做错了什么?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    在使用 Python SDK 时,您应该使用 skip_leading_rows 而不是 skipLeadingRows

    skip_leading_rows:读取数据时要跳过的行数(仅限 CSV)。

    参考:https://googleapis.dev/python/bigquery/latest/generated/google.cloud.bigquery.job.LoadJobConfig.html

    【讨论】:

      【解决方案2】:

      我无法重现此内容。我以您提供的示例(“2017-02-04T00:00:00-08:00”)为例,在 csv 文件中添加了 3 行/时间戳,将其上传到 GCS,最后在 BigQuery 中创建了一个包含一列的空表类型为TIMESTAMP

      文件内容:

      2017-02-04T00:00:00-08:00
      2017-02-03T00:00:00-08:00 
      2017-02-02T00:00:00-08:00
      

      然后我运行找到here 的示例Python 脚本,它成功地将文件加载到表中:

      将 3 行加载到 timestamp_test:gcs_load_test 中。

      def load_data_from_gcs(dataset_name, table_name, source):
          bigquery_client = bigquery.Client()
          dataset = bigquery_client.dataset(dataset_name)
          table = dataset.table(table_name)
          job_name = str(uuid.uuid4())
      
          job = bigquery_client.load_table_from_storage(job_name, table, source)
      
          job.begin()
      
          wait_for_job(job)
      
          print('Loaded {} rows into {}:{}.'.format(job.output_rows, dataset_name, table_name))
      

      【讨论】:

      • 啊哈......所以它不是 T 分隔符。我的错!谢谢你把这个放在格雷厄姆身上并证明我错了。我错过了错误消息第一部分中指出的真正问题,该部分指出:“无法将'开始时间'解析为时间戳”。 “开始时间”来自 CSV 标题行。我在脚本中包含了“job.skipLeadingRows = 1”,但这似乎不起作用。为什么作业没有跳过该标题行?
      • 请注意,我已根据 Graham 的有用反馈修改了我原来的问题。
      • 太棒了,那就是另外一回事了。凉爽的。但是,只是为了将来参考,完全编辑原始问题并将其变成一个新问题并不是一个好主意,因为我的答案现在完全无关紧要。最好从原始问题中衍生出一个新问题,并将其标记为已解决。
      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 2018-07-20
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多