用于将数据加载到 BigQuery 的 Singer.io 目标 - 兼容 PipelineWise
项目描述
pipelinewise-target-bigquery
根据Singer 规范将数据加载到 BigQuery 的Singer目标。
这是一个PipelineWise兼容的目标连接器。
如何使用它
运行此目标的推荐方法是从PipelineWise使用它。从 PipelineWise 运行它时,您无需使用 JSON 文件配置此分流器,并且大部分操作都是自动化的。请查看Target BigQuery中的相关文档
如果您想独立运行此Singer Target ,请进一步阅读。
安装
首先,确保您的系统上安装了 Python 3,或者按照Mac或 Ubuntu的这些安装说明进行操作。
推荐使用 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
- 在更改数据类型之前
COLUMN_THREE就像INTEGER在源表中一样:
| COLUMN_ONE | COLUMN_TWO | COLUMN_THREE(整数) |
|---|---|---|
| 文本 | 文本 | 1 |
| 文本 | 文本 | 2 |
| 文本 | 文本 | 3 |
- 数据类型更改后
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
运行测试:
- 定义需要运行测试的环境变量
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>
- 在虚拟环境中安装 python 依赖项并运行鼻子单元和集成测试
make venv
- 运行单元测试:
make unit_test
- 要运行集成测试:
make integration_test
要运行 pylint:
- 安装 python 依赖项并运行 python linter
make venv pylint
执照
Apache 许可证版本 2.0
请参阅许可证以查看全文。
项目详情
pipelinewise_target_bigquery-1.4.0-py3-none-any.whl 的哈希 值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 923ac02ad61be660bd2d64c4b322e4d7135670ce43d390b1645ecacd9b9cf2f6 |
|
| MD5 | 580550378b366f14354b60e3ae8b798a |
|
| 布莱克2-256 | 4ed18fca64674ee9d8ba0e36730388249fc0310eff1c73faef6796c89b249da8 |