使用 Power BI 连接 MatrixOne¶
Power BI Desktop 通过预览版
MatrixOne.mez自定义连接器连接到 MatrixOne,该连接器基于 ODBC,默认端口为6001,并启用 DirectQuery。本文介绍连接器放置、启用未签名扩展、Import 与 DirectQuery 模式以及诊断方法。
概述¶
MatrixOne.mez 连接器是一个使用 Odbc.DataSource 的 Power BI 自定义连接器。其数据源种类为 MatrixOne,入口点为 MatrixOne.Contents。连接器启用 DirectQuery,使用用户名/密码认证,并通过 SSLMODE=PREFERRED 请求机会式 TLS。此版本尚未验证 TLS 证书校验模式。MEZ 是未签名的 Power Query 扩展,Power Query 的签名/受信任分发流程使用 PQX。另一个独立事实是,v9.7.0-mo.3 的 MSI 和两个驱动 DLL 未进行 Authenticode 签名,参见 ODBC 安装安全提示。
开始前准备¶
已完成安装并启动 MatrixOne。
已安装匹配的 64 位
MatrixOne ODBC 9.7 Unicode Driver。已安装 Power BI Desktop。
语法结构¶
连接器要求服务器字符串采用 server[:port][;database] 格式:
server[:port][;database]
参数说明¶
参数 |
是否必填 |
说明 |
|---|---|---|
|
是 |
MatrixOne 主机名或 IP 地址。 |
|
否 |
MatrixOne 监听端口,省略时默认为 |
|
否 |
要连接的数据库,与服务器之间以 |
示例¶
使用默认端口连接 MatrixOne:
localhost:6001
使用默认端口连接指定数据库:
127.0.0.1:6001;test
安装连接器¶
将 MatrixOne.mez 放入 Power BI 自定义连接器目录。默认的 Windows MSI 安装会将它部署到以下两个目录:
Documents\Power BI Desktop\Custom ConnectorsDocuments\Microsoft Power BI Desktop\Custom Connectors
这两个位置分别对应传统版和 Microsoft Store 版 Power BI Desktop 的目录布局。当计划刷新使用 on-premises 数据网关时,网关必须与 Power BI Desktop 使用相同版本的连接器和驱动。
启用未签名连接器¶
预览版连接器未签名。在 Power BI Desktop 中,在 选项和设置 > 选项 > 安全性 > 数据扩展 下启用加载未验证的自定义扩展,重启 Power BI,然后从 获取数据 中选择 MatrixOne Database with DirectQuery Support。正式分发时应对连接器签名并恢复受信任扩展策略。
Import 与 DirectQuery 模式¶
Import 将所选表导入模型。
DirectQuery 将分组聚合下推到 MatrixOne,并保持数据实时。
连接器关闭 ODBC 参数绑定,以规避 MatrixOne 在参数数组 SELECT 模拟上的结果映射缺陷(matrixone#27034),同时关闭基于 CAST 的十进制转换折叠,避免 Power Query 的小数语义被错误下推。它还关闭 ClientConnectionPooling,使 DirectQuery 会话在 MatrixOne 重启后可以建立新的物理连接。
诊断¶
按以下顺序隔离故障:
用 MySQL 命令行客户端连接,此处的失败位于 ODBC 之下。
用
isql/iusql或 ODBC API 测试连接,记录 SQLSTATE、原生错误、驱动版本和服务端版本。调用
SQLGetInfo、SQLGetTypeInfo、SQLTables和SQLColumns,Navigator 的失败通常出现在这一层。测试 Import 模式,把连接器发现与类型转换同 DirectQuery SQL 生成分开。
测试 DirectQuery,捕获生成的 SQL 并在 MatrixOne 上直接重放。
如需 Power Query 细节,可用 pbi/MatrixOne.pq 中 EnableTraceOutput = true 制作开发构建,复现一次后改回 false。只有原生认证错误 1044 和 1045 会使已保存的 Power BI 凭据失效;语法、元数据和查询错误会原样返回,因此不会触发误导性的密码提示。
已知限制¶
本节严格对应连接器/驱动 v9.7.0-mo.3(commit 5cc5e1297f93809b1ea7352a1881b67c22b3a3ff)与测试使用的 MatrixOne commit 01ae8eca88110dc29d2f51e421570bb3d850d328。
PAD_CHAR_TO_FULL_LENGTH不会通过 ODBC 补齐CHAR结果(matrixone#27036,尚未关闭)。预处理
COUNT(?)缺陷对应 matrixone#26994,不是 #27034,且已在上游关闭。参数数组UNION ALL分支顺序缺陷对应 matrixone#27034,也已在上游关闭;mo.3连接器仍保留参数绑定 workaround。在删除 workaround 前,需要核对服务端 commit 祖先关系。
on-premises 数据网关计划刷新、签名的受信任扩展策略以及 TLS 证书校验模式仍未验证。
matrixone#27640 不列为 mo.3 限制:它是在更新的 MatrixOne main 和 ODBC PR #24 上复现,而 mo.3 设置了 Config_UseParameterBindings = false。