Google BigQuery
您可以使用 Google BigQuery 作为数据管道或复制任务中的目标数据平台。在数据管道中,可以在目标平台上执行各种 ELT 操作,包括存储数据、转换数据、创建数据集市和注册数据。另一方面,复制任务涉及将数据直接从源系统复制到具有基本转换功能的目标系统,但不支持 ELT 操作。
将 Google BigQuery 设定为目标涉及以下方面:
- 满足先决条件
- 配置与 Google BigQuery 的连接
配置与 Google BigQuery 的连接
要配置连接器,请执行以下操作:
-
在连接中单击创建连接。
-
选择 Google BigQuery 目标连接器,然后提供以下设置:
数据目标
数据网关
只有当目标数据库无法从 Qlik Cloud 访问时(例如,如果它位于或虚拟专用云中),才需要 数据移动网关,并且只能使用私有链接访问。如果是这种情况,请选择要通过其访问目标数据库的 数据移动网关。
根据您的使用情况,这将和从数据源移动数据时部署的 数据移动网关 相同,或者与之不同。
有关 数据移动网关 用例的信息,请参阅 什么时候需要 数据移动网关? 和 常见用例。
如果可以从 Qlik Cloud 直接访问目标数据库,请选择无。
连接属性
服务帐户密钥:上传创建 BigQuery 服务帐户密钥时下载的 JSON 文件。
位置:上传由 Qlik 创建的数据集的位置。如果选择其他,请在地区名称字段中输入地区名称。有关支持的地区名称的列表,请参阅 BigQuery 位置。
名称
连接的显示名称。
先决条件
登陆数据所需的权限
自动创建目标数据集所需的权限:
如果希望自动创建数据集,则需要以下权限:
BigQuery > BigQuery 作业用户
BigQuery > BigQuery 数据编辑者
目标数据集已存在时所需的权限:
如果数据集已经存在,则需要执行以下步骤:
-
创建具有以下权限的服务帐户:
BigQuery > BigQuery 作业用户
-
导航到要使用的数据集,然后:
-
添加您刚刚创建的服务帐户作为主体。
-
分配 BigQuery 数据编辑者角色。
-
驱动程序设置
只有通过 数据移动网关 访问数据库时才需要驱动程序。在这种情况下,您需要在 数据移动网关 计算机上安装驱动程序。
您可以使用驱动程序安装实用程序(推荐)安装 driver 或手动安装。只有在您遇到驱动程序安装实用程序发生问题的少见情况下,才应尝试手动安装。
使用驱动程序安装实用程序安装驱动程序
本部分介绍如何安装所需的 driver。这个过程包括运行一个脚本,该脚本将自动下载、安装和配置所需的 driver。您还可以根据需要运行脚本来更新和卸载 driver。
准备安装
-
请确保在 数据移动 网关服务器上安装了 Python 3.6 或更高版本。
Python 预装在大多数 Linux 发行版上。您可以通过运行以下命令来检查系统上安装了哪个 Python 版本。
python3 --version
安装 driver
下载并安装 driver :
-
停止 数据移动网关 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./install gbq
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 install gbq 命令。
否则,将显示 driver 的 EULA。
-
执行以下选项之一:
- 重复按 [Enter] 可在 EULA 中缓慢滚动。
- 重复按空格键可快速滚动 EULA。
- 按 q 退出许可证文本并显示 EULA 接受选项。
-
执行以下操作之一:
- 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
- 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
-
键入“v”并按 [Enter] 以再次查看 EULA。
-
等待安装完成(以“完成!”指示),然后启动 数据移动网关 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> ago
将会安装 driver。
更新 driver
如果要在安装提供的 driver 之前卸载以前版本的 driver,请运行 update 命令。
下载并更新 driver:
-
停止 数据移动网关 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./update gbq
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 update gbq 命令。
否则,将显示 driver 的 EULA。
-
执行以下选项之一:
- 重复按 [Enter] 可在 EULA 中缓慢滚动。
- 重复按空格键可快速滚动 EULA。
- 按 q 退出许可证文本并显示 EULA 接受选项。
-
执行以下操作之一:
- 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
- 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
- 键入“v”并按 [Enter] 可从头开始查看 EULA。
-
等待安装完成(以“完成!”指示),然后启动 数据移动网关 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> ago
将卸载旧的 driver,并安装新的 driver。
卸载 driver
如果要卸载 driver,请运行 uninstall 命令。
卸载 driver:
-
停止所有配置为使用此连接器的任务。
-
在 数据移动 网关计算机上,将工作目录更改为:
opt/qlik/gateway/movement/drivers/bin
-
然后运行以下命令:
语法:
./uninstall gbq
将卸载 driver。
手动安装驱动程序
只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver。
您需要同时安装 ODBC 驱动程序和 JDBC 驱动程序。
安装 ODBC 驱动程序
安装 数据移动网关 后,下载 SimbaODBCDriverforGoogleBigQuery_<version>-Linux.tar.gz 和 google-cloud-sdk-<version>-linux-x86_64.tar.gz 文件。您可以在 /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml 中找到 binary-artifacts 下这些文件的直接下载链接。下载完成后,将文件复制到 数据移动网关 计算机上。
-
停止 数据移动网关 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
-
提取:
SimbaODBCDriverforGoogleBigQuery_<version>.tar.gz
更改为:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux
-
移动文件 GoogleBigQueryODBC.did 和 simba.googlebigqueryodbc.ini 至 Simba ODBC 驱动程序目录下的 lib 目录中。
示例:
从以下位置移动文件:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/setup
更改为:
/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib
-
如下编辑 simba.googlebigqueryodbc.ini 文件:
-
将
ErrorMessagesPath
更改为包含 ODBC 消息的 XML 文件的路径。默认位置为:ErrorMessagesPath=/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/ErrorMessages
- 将
DriverManagerEncoding
更改为UTF-16
:
-
-
将以下路径添加到 数据移动网关 bin 目录中的 site_arep_login.sh 文件:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib
-
编辑 /etc/odbcinst.ini 文件并添加驱动程序路径(即安装驱动程序的路径):
[ODBC Drivers]
Simba= Installed
Simba ODBC Driver for Google BigQuery = Installed
[Simba ODBC Driver for Google BigQuery]
Description=Simba ODBC Driver for Google BigQuery(64-bit)
Driver=/opt/SimbaODBCDriverforGoogleBigQuery_<version>-Linux/SimbaODBCDriverforGoogleBigQuery64_<version>/lib/libgooglebigqueryodbc_sb64.so
-
安装 google-cloud-sdk-<version>-linux-x86_64.tar.gz。
-
启动 数据移动网关 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> ago
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
安装 JDBC 驱动程序及其相关项
-
下载 /opt/qlik/gateway/movement/drivers/manifests/gbq.yaml 中 binary-artifacts 下列出的以下 ZIP 文件和 JAR 文件:
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-bigquery/<version>/google-cloud-bigquery-<version>.jar
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-storage/<version>/google-cloud-storage-<version>.jar
- https://storage.googleapis.com/simba-bq-release/jdbc/SimbaJDBCDriverforGoogleBigQuery<version>.zip
将 JAR 文件复制到 数据移动网关 计算机上的以下文件夹中,并将 SimbaJDBCDriverforGoogleBigQuery<version>.zip 中的 JAR 文件解压到同一文件夹中:
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
通过运行重新启动服务中所述的命令重新启动 数据移动网关 服务
端口
需要为出站通信打开防火墙端口 443。
数据类型
将使用默认值设置参数化数据类型长度:
-
字符串:8192(长度)
-
字节:8192(长度)
-
NUMERIC:精确度:38,刻度:9
-
BIGDECIMAL:精确度:76,刻度:38
下表显示了使用 Qlik Cloud 时支持的 Google BigQuery 数据类型以及自 Qlik Cloud 数据类型的默认映射。
本机数据类型信息将被保留,并显示在数据集视图的本机数据类型列中。如果列不可见,则需要打开数据集视图的列选择器,然后选择本机数据类型列。
Qlik Cloud 数据类型 | Google BigQuery 数据类型 |
---|---|
BOOLEAN |
BOOL |
BYTES |
BYTES(以字节计算的长度) |
DATE |
DATE |
TIME |
TIME |
DATETIME |
TIMESTAMP |
INT1 |
TINYINT |
INT2 | SMALLINT |
INT4 |
INTEGER |
INT8 | BIGINT |
NUMERIC |
NUMERIC(精确度、刻度) |
REAL4 |
FLOAT64 |
REAL8 |
FLOAT64 |
UINT1 |
TINYINT |
UINT2 |
SMALLINT |
UINT4 |
INTEGER |
UINT8 |
BIGINT |
STRING |
STRING(以字节计算的长度) |
WSTRING |
STRING(以字节计算的长度) |
BLOB |
BYTES |
NCLOB |
STRING |
CLOB |
STRING |
以下数据类型转换为 STRING:
-
ARRAY
-
STRUCT
-
JSON
-
GEOGRAPHY
只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver。
限制和考虑事项
将数据移动到 Google BigQuery 目标时,有以下限制和注意事项适用。
所有数据任务的限制和注意事项
- 不支持以下 DDL:
- 放置列
- 重命名列
- 更改列数据类型
- 重命名表格
不支持在没有主键或唯一索引的情况下从源表捕获更改。如果需要从这些表中捕获更改,可以使用转换添加主键。此外,主键或唯一索引列不能包含 NULL。如果您知道这些列将填充 NULL值,请定义一个转换,将 NULL 更改为不可为 NULL 的值。
仅复制任务的限制和注意事项
- 不支持事务性应用更改模式。
不支持用于应用冲突和数据错误的将记录记于异常表中异常表错误处理选项。
使用以下任务设置配置,复制任务将执行删除操作,然后执行插入而不是更新:
将应用更改模式设置为批量优化。
未选择使用 SQL MERGE 应用更改选项。
应用冲突的更新错误处理设置为:未找到用于应用更新的记录:插入丢失的目标记录。
由于 Google Cloud BigQuery 不支持回滚,如果复制任务无法插入更新的行,将从目标中删除数据。