BigQuery:从 CSV 加载,跳过列

Kev*_* S. 5 python csv google-bigquery

假设我有一个包含现有数据的表,其架构如下:

{ 'name' : 'Field1', 'type' : 'STRING' },
{ 'name' : 'Field2', 'type' : 'STRING' }
Run Code Online (Sandbox Code Playgroud)

我们的数据是 CSV:

Field1,Field2
Value1,Value2
...
Run Code Online (Sandbox Code Playgroud)

我们通过创建新作业来加载数据,直接从 Google Cloud Storage (GCS) 加载 CSV。我们的数据文件现在有一个额外的列和不同的排序,这样数据现在是结构化的:

Field1,Field3,Field2
Value1,Value3,Value2
...
Run Code Online (Sandbox Code Playgroud)

有没有办法在加载作业中指定我们要跳过第二列,而只加载第 1 列和第 3 列(名为 Field1 和 Field2)?

我正在使用 Python API,例如 service.jobs().insert(job_body)

基本上我想做这样的事情:

job_body = {
  'projectId': projectId,
  'configuration': {
      'load': {
        'sourceUris': [sourceCSV],
        'schema': {
          'fields': [
            {
              'name': 'Field1',
              'type': 'STRING'
            },
            { # this would be the skipped field
              'name': None
              'skip': True
            },
            {
              'name': 'Field2',
              'type': 'String'
            },
          ]
        },
        'destinationTable': {
          'projectId': projectId,
          'datasetId': datasetId,
          'tableId': targetTableId
        },
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Fel*_*ffa 3

目前还不可能做到这一点,但这可能是一个有趣的功能请求。请随意将其添加到https://code.google.com/p/google-bigquery/issues/list

与此同时,我会进行两步导入:

  1. 导入为包含 3 列的新表。
  2. 将“SELECT column1, column2 FROM [newtable]”追加到现有表中。