使用 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]

参数说明

参数

是否必填

说明

server

MatrixOne 主机名或 IP 地址。

port

MatrixOne 监听端口,省略时默认为 6001

database

要连接的数据库,与服务器之间以 ; 分隔。

示例

使用默认端口连接 MatrixOne:

localhost:6001

使用默认端口连接指定数据库:

127.0.0.1:6001;test

安装连接器

MatrixOne.mez 放入 Power BI 自定义连接器目录。默认的 Windows MSI 安装会将它部署到以下两个目录:

  • Documents\Power BI Desktop\Custom Connectors

  • Documents\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 重启后可以建立新的物理连接。

诊断

按以下顺序隔离故障:

  1. 用 MySQL 命令行客户端连接,此处的失败位于 ODBC 之下。

  2. isql/iusql 或 ODBC API 测试连接,记录 SQLSTATE、原生错误、驱动版本和服务端版本。

  3. 调用 SQLGetInfoSQLGetTypeInfoSQLTablesSQLColumns,Navigator 的失败通常出现在这一层。

  4. 测试 Import 模式,把连接器发现与类型转换同 DirectQuery SQL 生成分开。

  5. 测试 DirectQuery,捕获生成的 SQL 并在 MatrixOne 上直接重放。

如需 Power Query 细节,可用 pbi/MatrixOne.pqEnableTraceOutput = 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