# Google Cloud Storage

Google Cloud Storage 是 Google 的统一对象存储服务，用于在 Google Cloud 基础架构上存储和访问数据。它提供高可用性、全球冗余，并与更广泛的 Google Cloud 生态系统集成。

Qlik Talend Cloud 使用对目标存储段具有读取权限的 Google Cloud 服务账号连接到 Google Cloud Storage (GCS)。连接器从指定的存储段检索文件，通过对文件内容进行采样来自动发现模式，并基于文件修改时间戳执行增量数据复制。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Google-Cloud-Storage.htm)

#### 特性快照

对这个连接器进行高级查看，包括有用的链接和支持的特性。

| 特性/功能 | 支持详情 |
| --- | --- |
| 支持的 Qlik Talend Data Integration 项目 | 仅 [Replication 项目](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/data-replication-task.htm)。不支持数据管道项目。 |
| [目标更新方法](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Change-processing.htm) | 复制任务：<br><br><ul><li><p>应用更改</p></li><li><p>存储更改</p></li></ul><br><br>在数据湖任务中登陆数据：<br><br><ul><li><p>更改数据捕获 (CDC)</p></li></ul> |
| [连接到 SaaS 应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm#Managing) | 无需手动生成元数据。 |
| [自动模式演进](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Schema) | 只支持更改列数据类型操作。 |
| 复制 LOB 列（NCLOB、CLOB 和 BLOB） | 不支持 |
| 已计划 CDC | 必填字段。这就是目标与源的更改保持同步的方式。<br><br>有关复制任务，请参阅[计划任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings.htm#Scheduli2)<br><br>有关湖登陆任务，请参阅[为湖登陆任务调度 CDC](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/landing-datalakes-settings.htm#Scheduli2) |
| 通知 | 部分支持<br><br>[设置操作更改通知](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Notifications.htm) |
| 监视 | 仅 CDC，因为满负载与此连接器无关。<br><br>[监视单个数据任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Monitoring-data-tasks.htm) |
| JSON 列有效载荷的自动解密 | 不支持不会自动在目标上删除源数据集中的 JSON 列有效负载。 |

## 准备身份验证

要访问您的数据，您需要使用您的帐户凭据对连接进行身份验证。

信息注释请确保您使用的帐户对要获取的表具有读取权限。

要设置您的 Google Cloud Storage 账号，您需要：

* 已启用 Cloud Storage API 的 Google Cloud Platform (GCP) 项目。

* 包含要复制的文件的 Google Cloud Storage (GCS) 存储段。

* 对存储段具有读取权限的服务账号。

  推荐的角色是 Storage Object Viewer (`roles/storage.objectViewer`)，该角色会授予所需的 `storage.objects.get` 和 `storage.objects.list` 权限。有关更多信息，请参阅 [Google Cloud Storage IAM 角色文档](https://docs.cloud.google.com/storage/docs/access-control/iam-roles)。

* 为该服务账号下载的服务账号 JSON 密钥文件。

要创建服务账号并获取您的凭据：

1. 登录您的 [Google Cloud](https://accounts.google.com/v3/signin/identifier?authuser=0&ec=GAlAywI&hl=en&flowName=GlifWebSignIn&flowEntry=AddSession&dsh=S-1020015778%3A1777897358935634) 账号。

2. 前往 IAM 和管理 &gt; 服务帐号。

3. 单击创建服务帐户。

4. 输入服务账号的名称和说明，然后点击创建并继续。

5. 向服务账号授予 Storage Object Viewer 角色，或具有 `storage.objects.get` 和 `storage.objects.list` 权限的自定义角色。

6. 点击继续和完成。

7. 在您新创建的服务账号中，点击 操作 菜单。

8. 导航至 管理密钥 &gt; 添加密钥 &gt; 创建新密钥。

9. 选择 JSON，然后单击 创建。

   JSON 密钥文件将直接下载到您的计算机。此文件包含建立连接所需的 `project_id`、`client_email` 和 `private_key` 字段。

   您只能下载一次密钥文件。请务必安全存储并备份它，因为它提供了访问您的 Google Cloud 资源的权限。

### 支持的文件格式

* 分隔文本：CSV、TSV、PSV、TXT（支持可配置分隔符）
* JSON Lines (`.jsonl`)
* Parquet (`.parquet`)
* Avro (`.avro`)
* 包含上述任一格式的 Gzip 压缩文件 (`.gz`)
* 包含 CSV、JSON Lines、TXT、TSV、PSV 或 Gzip 文件的 ZIP 归档文件

## 创建连接

有关更多信息，请参阅[连接到 SaaS 应用程序](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm)。

1. 填写所需的连接属性。

2. 在连接名称中提供连接的名称。

3. 选择打开连接元数据以定义创建连接时的元数据。

4. 单击创建。

连接设置

| 设置 | 描述 |
| --- | --- |
| 数据网关 | 如果您的用例需要，请选择一个 数据移动网关。<br><br>信息注释<br><br>此字段不适用于 Qlik Talend Cloud Starter 订阅，因为它不支持 数据移动网关。如果您有另一个订阅层并且不想使用 数据移动网关，请选择无。<br><br>有关 数据移动网关 的优势和需要它的用例的信息，请参阅[Qlik 数据网关 - 数据移动](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。 |
| 开始日期 | 按格式 `MM/DD/YYYY` 输入必须将数据从源复制到目标的日期。 |
| 客户电子邮件 | 服务账号 JSON 密钥文件中的客户端电子邮件。 |
| 项目 ID | 服务账号 JSON 密钥文件中的项目 ID。 |
| 存储桶 | 存储文件的 Google Cloud Storage (GCS) 存储段名称，例如 `my-gcs-bucket`。<br><br>请勿包含 `gs://` 前缀。 |
| 表格 | 配置表以控制读取哪些文件以及如何解释其内容。每个表定义均包含文件搜索模式、表名以及用于高级行为的可选设置。 |
| 私钥 | 服务账号 JSON 密钥文件中的私钥。 |

### 表格配置

表配置中的每个条目都指定了一个由目标存储段中的文件创建的逻辑表。您可以为每个表配置以下属性：

| 属性 | 必选或可选 | 描述 |
| --- | --- | --- |
| 表格名称 | 必填字段 | 为逻辑表指定名称，例如 `my_orders_csv`。此名称将在 Qlik Talend Cloud 中显示为数据流名称。 |
| 搜索模式 | 必填字段 | 输入正则表达式以匹配文件名，例如 `.*\.csv$` 可选择所有 CSV 文件。该连接器使用正则表达式和 glob 搜索模式语法。在正则表达式中，`*.csv` 不匹配 CSV 文件名，因为 `*` 必须关注要重复的表达式。使用诸如 `\.csv$` 或 `.*\.csv$` 之类的模式来匹配类似于 `report.csv` 和 `my.data.csv` 的文件名。 |
| 搜索前缀 | 可选 | 提供存储段内的路径前缀以缩小文件搜索范围，例如 `exports/orders/`。使用前缀通过限制扫描的文件数量来提高性能。 |
| 关键属性 | 可选 | 列出一个或多个以逗号分隔的列名，以定义主键。例如：`id` 或 `id,date`。 |
| 日期覆盖 | 可选 | 列出要作为日期时间字段处理的列名，以逗号分隔。如果在模式发现期间未自动检测到这些字段，请使用此选项。 |
| 分隔符 | 可选 | 指定用于分隔文件中各值的字符。默认值为 `,`（逗号）。对制表符分隔 (TSV) 文件使用 `\t`，或对竖线分隔 (PSV) 文件使用 `\|`。如果留空，系统将根据文件扩展名自动检测分隔符。 |

### 已复制的表

表格是根据表格配置创建的（参见上文）。每个表对应 Google Cloud Storage (GCS) 存储段中的一组文件，这些文件同时匹配指定的搜索模式和任何可选前缀。连接器通过对每个表最多采样 5 个文件、每 5 行读取一行（每个文件最多 1,000 条记录）来自动发现架构。

复制是增量的，并使用文件修改时间戳来跟踪更改。在每次提取过程中，连接器仅处理自上次成功同步以来修改过的文件（如同步书签所记录）。

默认情况下，每个表中都会添加以下系统列：

| 列 | 描述 |
| --- | --- |
| `_sdc_source_bucket` | 读取该记录的 Google Cloud Storage (GCS) 存储段的名称。 |
| `_sdc_source_file` | 包含该记录的文件的完整路径。 |
| `_sdc_source_lineno` | 记录在文件中的行号。 |
| `_sdc_extra` | 解析过程中发现的与已发现架构不匹配的任何额外列。仅适用于 JSONL 文件。 |

## 限制和考虑事项

* Service account 凭据 (`project_id`, `client_email`, `private_key`) 必须作为从 JSON 密钥文件中提取的单独值来提供；不支持文件上传。
* 支持 Gzip 压缩文件 (`.gz`)。连接器从 gzip 标头中读取原始文件名，以确定内部文件格式。使用 `--no-name` 创建的 Gzip 文件（标头中未存储文件名）将被跳过。
* 不支持嵌套压缩（例如，另一个 `.gz` 中的 `.gz` 或 `.zip` 中的 `.zip`）。已跳过这些文件。
* 带有 `.csv`、`.txt`、`.tsv`、`.psv` 或 `.jsonl` 扩展的文件会被检查是否存在 gzip 魔术字节，如果经过 gzip 压缩则会进行解压——即使该文件没有 `.gz` 扩展也是如此。
* `search_pattern` 字段使用正则表达式和 glob 搜索模式语法。在正则表达式中，`*.csv` 不匹配 CSV 文件名，因为 `*` 必须关注要重复的表达式。使用 `.*\.csv$` 匹配诸如 `report.csv` 和 `my.data.csv` 之类的文件名。
* 该连接器内置了带有指数退避机制的重试逻辑，用于处理 Google Cloud Storage (GCS) API 速率限制 (`429`) 和瞬态服务器错误 (`500`、`502`、`503`、`504`)。在失败前最多尝试五次。
* 没有可识别扩展的文件将被跳过，并发出警告。