Как загрузить внешнюю таблицу BigQuery из Google Cloud Storage с помощью python? - PullRequest
0 голосов
/ 29 ноября 2018

Я использую load_table_from_uri() метод bigquery.Client() в следующем коде (, полученный из этого урока ), и он создает собственную таблицу:

from google.cloud import bigquery

def main():
    ''' Load all tables '''
    client = bigquery.Client()
    bq_load_file_in_gcs(
        client,
        'gs://bucket_name/data100rows.csv',
        'CSV',
        'test_data.data100_csv_native'
    )

def bq_load_file_in_gcs(client, path, fmt, table_name):
    '''
        Load BigQuery table from Google Cloud Storage

        client - bigquery client
        path - 'gs://path/to/upload.file',
        fmt -   The format of the data files. "CSV" / "NEWLINE_DELIMITED_JSON".
                https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load.sourceFormat
        table_name - table with datasouce
    '''

    job_config = bigquery.LoadJobConfig()
    job_config.autodetect = True
    job_config.skip_leading_rows = 1
    job_config.source_format = fmt

    load_job = client.load_table_from_uri(
        path,
        table_name,
        job_config=job_config
    )

    assert load_job.job_type == 'load'

    load_job.result()  # Waits for table load to complete.

    assert load_job.state == 'DONE'

Что янужно также иметь возможность создавать внешнюю таблицу, как я мог бы сделать в интерфейсе BigQuery:

Screenshot of BigQuery UI

Но я не могу найти, гдеустановить тип таблицы в конфигурации задания или аргументах метода.Возможно ли это, и если да, то как?

1 Ответ

0 голосов
/ 29 ноября 2018

Примеры приведены в главе Внешняя конфигурация .

В основном вам необходимо использовать внешнюю конфигурацию объекта таблицы, например:

table = bigquery.Table(.........)

external_config = bigquery.ExternalConfig('CSV')
source_uris = ['<url-to-your-external-source>'] #i.e for a csv file in a Cloud Storage bucket 

external_config.source_uris = source_uris
table.external_data_configuration = external_config
...