# #google-cloud-platform #google-cloud-storage #airflow
Вопрос:
Я пытаюсь экспортировать таблицу BQ в GCS с помощью airflow.contrib.operators.bigquery_operator
, однако мне нужен пользовательский делиметр и без заголовка. Когда я изменяю настройки, это никак не влияет на результирующую таблицу. Что я делаю не так?
export_to_gcs_op = BigQueryToCloudStorageOperator(
task_id=f'bq_transfer_{TABLE}_to_gcs',
source_project_dataset_table=f'{PROJECT_ID}.{DATASET}.{TABLE}',
export_format='csv',
field_delimiter='',
print_header=False,
destination_cloud_storage_uris=[f"gs://{GCS_BUCKET}/{TABLE}.csv"],
)
Версия воздушного потока, которую я установил в своей компании, я не могу ее обновить:
apache-airflow = "1.10.15"
apache-airflow-backport-providers-google = "2021.3.3"
Ответ №1:
Я думаю, вам нужно export_format='CSV'
писать в верхнем регистре. Это также значение по умолчанию, поэтому вы можете опустить это поле, если хотите.
От https://github.com/apache/airflow/blob/1.10.15/airflow/contrib/hooks/bigquery_hook.py#L976-L981
if export_format == 'CSV':
# Only set fieldDelimiter and printHeader fields if using CSV.
# Google does not like it if you set these fields for other export
# formats.
configuration['extract']['fieldDelimiter'] = field_delimiter
configuration['extract']['printHeader'] = print_header
Комментарии:
1. @MStikh — это решает вашу проблему?
2. нет, это не работает, вот почему у меня такой вопрос..
3. @MStikh код, который вы опубликовали
csv
, написан в нижнем регистре, убедитесь, что вы используетеCSV
верхний регистр вместо этого.