airflow.providers.google.cloud.transfers.sql_to_gcs

SQL 到 GCS 运算符的基础类。

BaseSQLToGCSOperator

将数据从 SQL 复制到 Google Cloud Storage,格式包括 JSON、CSV 或 Parquet。

模块内容

class airflow.providers.google.cloud.transfers.sql_to_gcs.BaseSQLToGCSOperator(*, sql, bucket, filename, schema_filename=None, approx_max_file_size_bytes=1900000000, export_format='json', stringify_dict=False, field_delimiter=',', null_marker=None, gzip=False, schema=None, parameters=None, gcp_conn_id='google_cloud_default', impersonation_chain=None, upload_metadata=False, exclude_columns=None, partition_columns=None, write_on_empty=False, parquet_row_group_size=100000, **kwargs)[source]

基类: airflow.models.BaseOperator

将数据从 SQL 复制到 Google Cloud Storage,格式包括 JSON、CSV 或 Parquet。

参数
  • sql (str) – 要执行的 SQL 查询。

  • bucket (str) – 要上传到的存储桶。

  • filename (str) – 上传到 Google Cloud Storage 时用作对象名称的文件名。文件名中应包含 {},以便运算符在文件因大小而分割时注入文件编号。

  • schema_filename (str | None) – 如果设置,则作为上传包含从数据库转储的表的 BigQuery 模式字段的 .json 文件时的对象名称。

  • approx_max_file_size_bytes (int) – 此运算符支持将大型表转储分割成多个文件的功能(参见上面 filename 参数文档中的注释)。此参数允许开发者指定分割后的文件大小。请查阅 https://cloud.google.com/storage/quotas 以查看单个对象允许的最大文件大小。

  • export_format (str) – 要导出的文件的所需格式。(json, csv 或 parquet)

  • stringify_dict (bool) – 是否将字典类型对象(如 JSON 列)转储为字符串。仅适用于 CSV/JSON 导出格式。

  • field_delimiter (str) – 用于 CSV 文件的字段分隔符。

  • null_marker (str | None) – 用于 CSV 文件的 null 标记。

  • gzip (bool) – 上传文件时是否压缩(不适用于模式文件)。

  • schema (str | list | None) – 要使用的模式,如果存在。应为字典列表或字符串。如果使用 Jinja 模板,则传递字符串;否则,传递字典列表。示例参见:https://cloud.google.com/bigquery/docs /schemas#specifying_a_json_schema_file

  • gcp_conn_id (str) – (可选) 用于连接到 Google Cloud 的连接 ID。

  • parameters (dict | None) – 一个参数字典,在查询运行时进行替换。

  • impersonation_chain (str | collections.abc.Sequence[str] | None) – (可选) 要使用短期凭据模拟的服务帐户,或获取列表中最后一个帐户(将在请求中被模拟)的 access_token 所需的链式帐户列表。如果设置为字符串,该帐户必须授予源帐户 Service Account Token Creator IAM 角色。如果设置为序列,列表中的身份必须授予紧前身份 Service Account Token Creator IAM 角色,列表中第一个帐户授予此角色给源帐户 (模板化)。

  • upload_metadata (bool) – 是否将行数元数据作为 blob 元数据上传。

  • exclude_columns (set | None) – 从传输中排除的列集合。

  • partition_columns (list | None) – 用于文件分区的列列表。为了使用此参数,您必须按 partition_columns 对数据集进行排序。通过在 sql 查询中传递 ORDER BY 子句来实现。文件作为对象上传到 GCS,具有 hive 风格的分区目录结构 (模板化)。

  • write_on_empty (bool) – 可选参数,指定如果导出没有返回任何行是否写入文件。默认为 False,因此如果导出没有返回任何行,我们将不写入文件。

  • parquet_row_group_size (int) – 使用 parquet 格式时,每个行组的大约行数。使用较大的行组大小可以减少文件大小并提高读取数据的性能,但执行运算符需要更多内存。(默认: 100000)

template_fields: collections.abc.Sequence[str] = ('sql', 'bucket', 'filename', 'schema_filename', 'schema', 'parameters', 'impersonation_chain',...[source]
template_ext: collections.abc.Sequence[str] = ('.sql',)[source]
template_fields_renderers[source]
ui_color = '#a0e08c'[source]
sql[source]
bucket[source]
filename[source]
schema_filename = None[source]
approx_max_file_size_bytes = 1900000000[source]
export_format = ''[source]
stringify_dict = False[source]
field_delimiter = ','[source]
null_marker = None[source]
gzip = False[source]
schema = None[source]
parameters = None[source]
gcp_conn_id = 'google_cloud_default'[source]
impersonation_chain = None[source]
upload_metadata = False[source]
exclude_columns = None[source]
partition_columns = None[source]
write_on_empty = False[source]
parquet_row_group_size = 100000[source]
execute(context)[source]

创建运算符时派生此方法。

Context 是与渲染 jinja 模板时使用的相同的字典。

有关更多上下文,请参阅 get_template_context。

convert_types(schema, col_type_dict, row)[source]

将 DBAPI 中的值转换为适合输出的格式。

abstract query()[source]

执行 DBAPI 查询。

abstract field_to_bigquery(field)[source]

将 DBAPI 字段转换为 BigQuery 模式格式。

abstract convert_type(value, schema_type, **kwargs)[source]

将 DBAPI 中的值转换为适合输出的格式。

此条目有帮助吗?