Azure Synapse Analytics
您可以将 Azure Synapse Analytics 用作数据管道中的目标数据平台。在数据管道中,可以在目标平台上执行各种 ELT 操作,包括存储数据、转换数据、创建数据集市和注册数据。
将 Azure Synapse Analytics 设定为目标涉及以下方面:
设置云暂存区
您还需要一个 Azure Data Lake Storage 云暂存区,在应用和存储之前,数据和更改都在那里暂存。有关设置与 Azure 数据湖存储的连接的信息,请参阅Azure Data Lake Storage。
正在设置 Azure Synapse Analytics 连接属性
提供 Azure Data Lake 存储目标设置后,请执行以下操作:
-
在连接中单击创建连接。
-
选择 Azure Synapse Analytics 目标连接器,然后提供以下设置:
数据目标
数据网关
只有当目标数据库无法从 Qlik Cloud 访问时(例如,如果它位于或虚拟专用云中),才需要 数据移动网关,并且只能使用私有链接访问。如果是这种情况,请选择要通过其访问目标数据库的 数据移动网关。
根据您的使用情况,这将和从数据源移动数据时部署的 数据移动网关 相同,或者与之不同。
有关 数据移动网关 用例的信息,请参阅 什么时候需要 数据移动网关? 和 常见用例。
如果可以从 Qlik Cloud 直接访问目标数据库,请选择无。
连接属性
-
服务器:用于标识 Azure Synapse Analytics 数据库位置的主机名。
-
端口:用来访问您的 Azure Synapse Analytics 数据库的端口。默认值为 1433。
帐户属性
用户名称和密码:经授权可访问 Azure Synapse Analytics 数据库的用户的用户名和密码。
数据库属性
-
数据库名称:有两种方法可以用于指定数据库:
- 方法 1 - 从列表中选择:此方法要求在主数据库上创建用户。单击加载数据库,然后选择一个数据库。
- 方法 2 - 手动:选择手动输入数据库名称,然后输入数据库名称。
数据加载属性
SQL Server 凭据可以在运行时自动创建(默认设置),也可以使用现有凭据。根据情况执行以下操作之一:
- 如果选中创建 SQL Server 凭据复选框(默认设置),则将在运行时自动创建 SQL Server 凭据。在访问密钥字段中指定您的访问密钥。
- 若要使用现有凭据,请清除创建 SQL Server 凭据复选框,然后在凭据名称字段中指定您的 SQL Server 凭据名称。
名称
连接的显示名称。
先决条件
权限
您需要同时授予存储权限和数据库权限,如下所述。
存储权限
必须向 Azure Synapse Analytics 连接器中指定的用户授予以下存储权限。
- 在 ADLS Gen2 存储容器上:LIST
- 在 ADLS Gen2 存储文件夹上:READ、WRITE 和 DELETE
- 在 ADLS Gen2 文件系统的访问控制 (IAM) 设置中,将“存储 Blob 数据贡献者”角色分配给 数据移动网关(AD 应用程序 ID)。角色可能需要几分钟才能生效。
数据库权限
必须授予 Azure Synapse Analytics 连接器中指定的用户对数据库的以下权限:
-
一般权限:
- db_owner ROLE
-
表格权限:
- SELECT、INSERT、UPDATE 和 DELETE
- 批量加载
- CREATE、ALTER、DROP(如果任务定义要求)
数据库选择
为了能够选择数据库(通过单击连接器对话框中的加载数据库),需要在主数据库上创建连接器设置中指定的用户。
驱动程序设置
只有通过 数据移动网关 访问数据库时才需要驱动程序。在这种情况下,您需要在 数据移动网关 计算机上安装驱动程序。
您可以使用驱动程序安装实用程序(推荐)安装 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 sqlserver
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 install sqlserver 命令。
否则,将显示 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 sqlserver
如果无法下载 driver(由于访问限制或技术问题),将显示一条消息,为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后,请再次运行 update sqlserver 命令。
否则,将显示 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 sqlserver
将卸载 driver。
手动安装驱动程序
只有在自动驱动程序安装未成功完成的情况下,才应尝试手动安装 driver。
您需要同时安装 ODBC 驱动程序和 JDBC 驱动程序。
安装 ODBC 驱动程序
在安装 数据移动网关 后,下载 msodbcsql<版本>.x86_64.rpm 驱动程序。您可以在此路径下面找到受支持版本的直接下载链接:binary-artifacts in /opt/qlik/gateway/movement/drivers/manifests/sqlserver.yaml。下载完成后,将 RPM 复制到 数据移动网关 机器上。
在 Data Movement gateway 服务器上,打开 shell 提示符并执行以下操作:
-
停止 Data Movement gateway 服务:
sudo systemctl stop repagent
-
可选择确认服务已停止:
sudo systemctl status repagent
-
安装驱动程序 (RPM)。
-
将工作目录更改为 <product_dir>/bin。
-
如下将驱动程序位置复制到
site_arep_login.sh
文件:echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/microsoft/
msodbcsql<version>
/lib64/" >> site_arep_login.sh
这将把驱动程序添加到 "LD_LIBRARY_PATH" 并更新驱动程序位置于 site_arep_login.sh 文件。
-
可选择确认已将驱动程序位置复制:
cat site_arep_login.sh
-
启动 Data Movement gateway 服务:
sudo systemctl start repagent
-
可选择确认服务已启动:
sudo systemctl status repagent
状态应如下所示:
Active: active (running) since <timestamp> ago
-
Data Movement gateway 需要以下 ODBC 库:msodbcsql-18.1.so.1.1
要检查当前安装的库版本,请发出以下命令:
ls /opt/microsoft/msodbcsql<version>/lib64/
如果现有库有不同的版本号码(例如 libmsodbcsql-18.0.so.1.1),则需要在现有库和所需库之间创建符号链接。
为此,请发出以下命令:
cd /opt/microsoft/msodbcsql<version>/lib64/
ln -s existing_library_name
msodbcsql-18.1.so.1.1此处
existing_library_name
是当前安装的库的名称(例如 libmsodbcsql-18.0.so.1.1)。
状态应如下所示:
Active: inactive (dead) since <timestamp> ago
安装 JDBC 驱动程序
-
下载 mssql-jdbc-<version>.jar 文件。您可以在此路径下面找到受支持版本的直接下载链接:binary-artifacts in /opt/qlik/gateway/movement/drivers/manifests/sqlserver.yaml。下载完成后,将 JAR 文件复制到 数据移动网关 计算机上的以下文件夹。
/opt/qlik/gateway/movement/qcs_agents/qdi-db-commands/lib
-
通过运行重新启动服务中所述的命令重新启动 数据移动网关 服务
端口
- 在 Azure 之外的计算机上 数据移动网关 运行时 - 打开端口 1433 进行出站通信。
- 数据移动网关 在 AzureVM 上运行时 - 打开以下端口进行出站通信:
- 1433
- 11000-11999
- 14000-14999
限制和考虑事项
当使用 Azure Synapse Analytics 作为目标时,您需要考虑以下限制和注意事项:
-
具有 CHAR/VARCHAR 数据类型和非拉丁排序规则(例如“Chinese_PRC_CI_AS”)的源列需要映射到 NVARCHAR。
-
空源列处理:
-
当 移动 源二进制列(例如 VARBINARY 或 BLOB)的值为空时,Qlik Talend Data Integration 会在相应的目标列中插入 NULL。
信息注释空值不是 NULL,而是长度为零的数据。 -
- 不支持超过1 MB 的记录移动。
- 对于包含 4 字节表情符号字符的数据的移动,要求数据类型为目标上的宽字符串(例如 NCHAR/NVARCHAR/NCLOB)。
数据类型
下表显示了使用 Qlik Cloud 时支持的 Azure Synapse Analytics 数据类型以及自 Qlik Cloud 数据类型的默认映射。
本机数据类型信息将被保留,并显示在数据集视图的本机数据类型列中。如果列不可见,则需要打开数据集视图的列选择器,然后选择本机数据类型列。
Qlik Cloud 数据类型 | Azure Synapse Analytics 数据类型 |
---|---|
BOOLEAN |
BIT |
BYTES |
VARBINARY(以字节计算的长度) |
DATE |
DATE |
TIME |
TIME |
DATETIME |
DATETIME |
INT1 |
BYTEINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
NUMERIC(精确度、刻度) |
REAL4 |
REAL |
REAL8 |
FLOAT |
UINT1 |
BYTEINT |
UINT2 |
INTEGER |
UINT4 |
INTEGER |
UINT8 |
BIGINT |
STRING |
VARCHAR(以字节计算的长度) |
WSTRING |
NVARCHAR(以字节计算的长度) |
BLOB |
VARBINARY(以字节计算的长度) |
NCLOB |
NVARCHAR(以字节计算的长度) |
CLOB |
VARCHAR(以字节计算的长度) |