Skip to main content

用于将数据加载到 BigQuery 的 Singer.io 目标 - 兼容 PipelineWise

项目描述

pipelinewise-target-bigquery

PyPI 版本 PyPI - Python 版本 许可证:Apache2

根据Singer 规范将数据加载到 BigQuery 的Singer目标。

这是一个PipelineWise兼容的目标连接器。

如何使用它

运行此目标的推荐方法是从PipelineWise使用它。从 PipelineWise 运行它时,您无需使用 JSON 文件配置此分流器,并且大部分操作都是自动化的。请查看Target BigQuery中的相关文档

如果您想独立运行此Singer Target ,请进一步阅读。

安装

首先,确保您的系统上安装了 Python 3,或者按照MacUbuntu的这些安装说明进行操作。

推荐使用 virtualenv:

make venv

跑步

像任何其他遵循歌手规范的目标一样:

some-singer-tap | target-bigquery --config [config.json]

它正在读取来自 STDIN 的传入消息,并使用其中的属性config.json将数据上传到 BigQuery。

注意:为避免版本冲突tap,请targets在单独的虚拟环境中运行。

配置设置

运行目标连接器需要一个config.json文件。具有最小设置的示例:

{
  "project_id": "mygbqproject"
}

选项的完整列表config.json

财产 类型 必需的? 描述
项目编号 细绳 是的 BigQuery 项目
地点 细绳 BigQuery 存储数据集的区域
default_target_schema 细绳 将在其中创建表的架构的名称。如果schema_mapping未定义,则点击发送的每个流都将加载到此模式中。
default_target_schema_select_permission 细绳 授予对新创建的模式的 USAGE 权限并授予对新创建的模式的 SELECT 权限
模式映射 目的 如果您想将多个流从一键加载到多个 BigQuery 架构,这很有用。

如果点击发送stream_idin<schema_name>-<table_name>格式,则此选项会覆盖该default_target_schema值。请注意,使用schema_mapping您可以覆盖该default_target_schema_select_permission值以将 SELECT 权限授予每个模式的不同组,或者您可以选择为复制的表自动创建索引。

注意:这是一项实验性功能,建议通过 PipelineWise YAML 文件使用,该文件将以正确的 JSON 格式生成对象映射。有关更多信息,请查看PipelineWise YAML 示例
批量大小行 整数 (默认值:100000)每批的最大行数。在每个批次结束时,批次中的行会加载到 BigQuery 中。
batch_wait_limit_seconds 整数 (默认值:无)等待批次到达的最长时间batch_size_rows
flush_all_streams 布尔值 (默认值:False)当一个批次已满时,刷新每个流并将其加载到 BigQuery 中。警告:这可能会触发记录数较少的数据传输,并可能导致性能问题。
并行性 整数 (默认值:0)用于刷新表的线程数。0 将为每个流创建一个线程,直到 parallelism_max。-1 将为每个 CPU 内核创建一个线程。任何其他正数都将创建该数量的线程,最多为 parallelism_max。
最大平行度 整数 (默认值:16)刷新表时使用的最大并行线程数。
add_metadata_columns 布尔值 (默认值:False)元数据列添加有关数据摄取的额外行级信息,(即何时在源中读取行,何时在 bigquery 中插入或删除等)元数据列通过向表中添加额外的列来自动创建列前缀_sdc_。列名遵循https://www.stitchdata.com/docs/data-structure/integration-schemas#sdc-columns中记录的针迹命名约定。启用元数据列将通过设置_sdc_deleted_at元数据列来标记已删除的行。如果没有该add_metadata_columns选项,从歌手点击中删除的行将无法在 BigQuery 中识别。
硬删除 布尔值 (Default: False) When hard_deleteoption is true then DELETE SQL commands will be performed in BigQuery to delete rows in tables. 这是通过不断检查 _sdc_deleted_at歌手点击发送的元数据列来实现的。由于删除行需要元数据列,因此选项也会hard_delete自动启用该add_metadata_columns选项。
硬删除映射 目的 hard_delete如果您想为某些流而不是其他流进行设置,这很有用。这应该包含一个映射stream_id: <Boolean>。此布尔值将覆盖hard_delete为该流设置的默认行为。如果未在其中定义流,hard_delete_mapping它将根据hard_delete. When hard_deleteoption is true then DELETE SQL commands will be performed in BigQuery to delete rows in tables. 这是通过不断检查 _sdc_deleted_at歌手点击发送的元数据列来实现的。由于删除行需要元数据列,因此选项也会hard_delete自动启用该add_metadata_columns选项。
data_flattening_max_level 整数 (默认值:0)来自水龙头的对象类型 RECORD 项目可以作为 JSON(默认值)加载到 VARIANT 列中,或者我们可以通过自动创建列来展平模式。

当值为 0(默认)时,扁平化功能将关闭。
primary_key_required 布尔值 (默认值:True)在合并 UPDATE 事件时,在没有主键的表上基于日志和增量复制会导致重复。设置为 true 时,如果未定义主键,则停止加载数据。
验证记录 布尔值 (默认值:False)将每条记录消息验证到相应的 JSON 模式。默认情况下禁用此选项,无效的 RECORD 消息只会在 BigQuery 加载时失败。启用此选项将更早地检测到无效记录,但可能会导致性能下降。
temp_schema 细绳 将在其中创建临时表的模式的名称。将默认使用与目标表相同的架构
使用_partition_pruning 布尔值 (默认值:False)如果trueBigQuery 表分区修剪将用于已启用分区的表。此分区应位于不可变的列上,例如整数主键或created_at列。分区应由用户手动设置。此功能可以显着降低每个MERGE大型表的成本。

架构更改

由于 BigQuery 的工作方式,此目标确实遵循PipelineWise 规范以进行架构更改(版本控制列除外)。

BigQuery 不允许列重命名,因此列修改的工作方式如下:

版本控制列

当在源表中检测到数据类型更改时,目标连接器是版本控制列。版本控制列意味着保留具有旧数据类型的旧列,并通过根据类型(以及结构和数组的时间戳)向具有新数据类型的列名称添加后缀来创建新列。此新列将添加到表中。

例如,如果从 PipelineWise 更改的数据类型将按COLUMN_THREE以下 顺序复制数据:INTEGERVARCHAR

  1. 在更改数据类型之前COLUMN_THREE就像INTEGER在源表中一样:
COLUMN_ONE COLUMN_TWO COLUMN_THREE(整数)
文本 文本 1
文本 文本 2
文本 文本 3
  1. 数据类型更改后COLUMN_THREE保留INTEGER旧数据和使用仅在更改后保留数据的类型COLUMN_TREE__st创建的新列。STRING
COLUMN_ONE COLUMN_TWO COLUMN_THREE(整数) COLUMN_THREE__st (VARCHAR)
文本 文本 111
文本 文本 222
文本 文本 333
文本 文本 444-ABC
文本 文本 555-DEF

.. 警告::

请注意和列 NULL中的值。历史值不会转换为新的数据类型! 如果在数据类型更改后需要表的实际表示,则需要重新同步表。COLUMN_THREECOLUMN_THREE__st

运行测试:

  1. 定义需要运行测试的环境变量
  export GOOGLE_APPLICATION_CREDENTIALS=<credentials-json-file>
  export TARGET_BIGQUERY_PROJECT=<bigquery project to run your tests on>
  export TARGET_BIGQUERY_SCHEMA=<temporary schema for running the tests>
  1. 在虚拟环境中安装 python 依赖项并运行鼻子单元和集成测试
make venv
  1. 运行单元测试:
make unit_test
  1. 要运行集成测试:
make integration_test

要运行 pylint:

  1. 安装 python 依赖项并运行 python linter
make venv pylint

执照

Apache 许可证版本 2.0

请参阅许可证以查看全文。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pipelinewise-target-bigquery-1.4.0.tar.gz (23.8 kB 查看哈希

已上传 source

内置分布

pipelinewise_target_bigquery-1.4.0-py3-none-any.whl (26.1 kB 查看哈希

已上传 py3