Как использовать функцию field_to_bigquery(self, field) для MySqlToGoogleCloudStorageOperator

Я пытаюсь экспортировать некоторые данные из Mysql в GCS, а затем загрузить экспортированные jsons в таблицы BigQuery, но у меня возникают проблемы с некоторыми типами данных MySQL, такими как BIT и DateTime, потому что в результате json они появляются с форматом, который не право на BigQuery

Мне было интересно, есть ли способ привести эти значения в формат, подходящий для больших запросов, без необходимости делать дополнительный процесс преобразования.

В документации по воздушному потоку для MySqlToGoogleCloudStorageOperator ( https://airflow.apache.org/_api/airflow/contrib/operators/mysql_to_gcs/index.html) можно использовать в качестве помощника:

field_to_bigquery (self, field) и convert_type(self, value, schema_type)

Но я не могу понять, как реализовать это в моем коде.

Я пробовал что-то вроде этого:

MySQLtoGCS_TransTBComplete = MySqlToGoogleCloudStorageOperator(
        task_id='import,
        mysql_conn_id='mysql_default',
        google_cloud_storage_conn_id='google_cloud_storage_default',
        sql='SELECT * FROM table' 
        bucket='{bucket}',
        filename='file.json',
        dag=dag)

MySQLtoGCS_TransTBComplete.field_to_bigquery("datetime_field")

Может ли кто-нибудь помочь мне достичь того, чего я хочу?

Спасибо

0 ответов

Вы не можете использовать эти две функции специально в своем коде.

  • field_to_bigquery будет использоваться, если ваш набор schema_filename в операторе

  • convert_type всегда используется при выполнении задачи (вы можете видеть, что в исходном коде в sql_to_gcs.py

Согласно документу, похоже, что некоторые типы полей в MySQL не обрабатываются правильно (см. Здесь: https://airflow.apache.org/docs/stable/_modules/airflow/contrib/operators/mysql_to_gcs.html). Поэтому вам, возможно, придется реализовать свой собственный оператор, наследующий MySqlToGoogleCloudStorageOperator class и переопределив эти два метода.

Другие вопросы по тегам