Автоматическое создание таблиц в Bigquery для нескольких CSV-файлов

Я хочу автоматически генерировать таблицы в Bigquery всякий раз, когда файл загружается в корзину хранилища, используя облачную функцию в python.

Например, если файл sample1.csv загружен в корзину, то в Bigquery будет создана таблица sample1. Как автоматизировать это с помощью облачной функции с использованием Python, я пробовал с приведенным ниже кодом, но смог создать 1 таблицу, и все данные были добавлены в эту таблицу, как действовать дальше

def hello_gcs(event, context):
    from google.cloud import bigquery
    # Construct a BigQuery client object.
    client = bigquery.Client()

    # TODO(developer): Set table_id to the ID of the table to create.
    table_id = "test_project.test_dataset.test_Table"

    job_config = bigquery.LoadJobConfig(
    autodetect=True,
    skip_leading_rows=1,
    # The source format defaults to CSV, so the line below is optional.
    source_format=bigquery.SourceFormat.CSV,
    )
    uri = "gs://test_bucket/*.csv"

    load_job = client.load_table_from_uri(
    uri, table_id, job_config=job_config
    )  # Make an API request.

    load_job.result()  # Waits for the job to complete.

    destination_table = client.get_table(table_id)  # Make an API request.
    print("Processing file: {file['name']}.")

person Daemon    schedule 19.05.2021    source источник


Ответы (1)


Похоже, вам нужно сделать три вещи:

  1. Извлеките имя файла/объекта CSV из события уведомления, которое вы получаете, чтобы запустить свою функцию.

  2. Обновите table_id в коде примера, чтобы установить имя таблицы на основе имени файла, извлеченного на первом шаге.

  3. Обновите uri в своем примере кода, чтобы использовать только один файл в качестве входных данных. Как написано, ваш пример пытается загрузить данные из всех соответствующих объектов CSV в GCS в таблицу.

person shollyman    schedule 19.05.2021
comment
Сработало .. спасибо - person Daemon; 20.05.2021