代码之家  ›  专栏  ›  技术社区  ›  eilalan

BigQuery—加载超过10K列的Json

  •  0
  • eilalan  · 技术社区  · 6 年前

    我想使用BQ API从json文件中加载10K列,该文件中包含超过10K列(BQ限制)。

    我可以使用BQ代码提取前10K列吗?这是我在网上找到的使用自动检测模式的代码,但我找不到任何可以选择列的内容。

    为实现这一目标提出的任何建议都将不胜感激。 谢谢 埃拉兰

    # from google.cloud import bigquery
    # client = bigquery.Client()
    # dataset_id = 'my_dataset'
    
    dataset_ref = client.dataset(dataset_id)
    job_config = bigquery.LoadJobConfig()
    job_config.autodetect = True
    job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
    uri = 'gs://cloud-samples-data/bigquery/us-states/us-states.json'
    load_job = client.load_table_from_uri(
        uri,
        dataset_ref.table('us_states'),
        job_config=job_config)  # API request
    
    assert load_job.job_type == 'load'
    
    load_job.result()  # Waits for table load to complete.
    
    assert load_job.state == 'DONE'
    assert client.get_table(dataset_ref.table('us_states')).num_rows == 50
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Mikhail Berlyant    6 年前

    Load job不支持选择特定列—相反,您可以将文件加载到只有一列类型为STRING的表中,然后使用查询提取所需的列并将其选择到最终表中

        2
  •  0
  •   Hua Zhang    6 年前

    如果使用自动检测,则无法选择特定列,但如果可以自己提供架构,则可以使用 ignoreUnknownValues 选项让BigQuery忽略不在模式中的列,这基本上意味着只加载指定的列。