Как использовать функцию 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 и переопределив эти два метода.