Power BI Gateway 和 Report Builder 支持 ODBC 数据源
适用于: Power BI Report Builder Power BI Desktop
本文介绍如何在 Power BI 网关中配置开放式数据库连接 (ODBC) 数据源,以及如何在 Power BI Report Builder 中使用 ODBC 数据源。
数据源名称 (DSN) 和驱动程序连接字符串均受支持。
注意
Power BI Report Builder 现在是 64 位,并且将不再适用于 32 位驱动程序。 Power BI Report Builder 和 Power BI 网关需要 64 位版本。
安装 Power BI Gateway 前的准备工作
需要 Power BI Gateway 2021 年 2 月版本或更高版本。 建议在单独的计算机上安装网关,与 Power BI Report Builder 或 Power BI Desktop 所在的计算机分开。 在某些情况下,使用同一台计算机可能会引发一些问题。
安装和配置 Power BI Report Builder 以使用 ODBC 数据源
最新版本的 Power BI Report Builder 已包含 ODBC 数据扩展。
- 安装最新版本的 Power BI Report Builder。
- 安装你计划用于 Power BI Report Builder 的 64 位 ODBC 驱动程序。
安装 Power BI Gateway,配置 ODBC 数据源
按照以下步骤安装 Power BI Gateway 以使用 ODBC 数据源。
下载最新版 Power BI Gateway。
注意
Personal Gateway 不受分页报表的支持,因为它们需要 DirectQuery 支持。
有关安装网关的信息,请参阅什么是本地数据网关?一文。
安装你计划在网关计算机上使用的 64 位 ODBC 驱动程序。
注意
不支持文件 DSN。 如果你要使用 DSN,请在网关计算机上创建一个 64 位系统 DSN。
若要在 Power BI 服务中配置 ODBC 数据源,请在“设置”下选择“管理连接和网关”:
选择功能区顶部的“新建”以添加新数据源。 然后选择“添加数据源”>“ODBC 数据源类型”:
粘贴连接字符串(系统 DSN 或驱动程序),然后选择身份验证方法。 对于 ODBC 数据源,支持以下身份验证方法:
- 基本
- Windows
当你选择“添加”按钮时,Power BI 服务会使用提供的连接字符串和凭据连接到 ODBC 数据源,以验证网关是否可以进行连接。
ODBC 连接字符串示例
下面是一些用于系统 DSN 以及各种 ODBC 驱动程序的 ODBC 连接字符串示例:
- "dsn=Northwind"
- "driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=c:\Data\Northwind.mdb"
- "driver={SnowflakeDSIIDriver};warehouse=DEMO_WH;server=org.snowflakecomputing.com"
- "driver={Amazon Redshift (x64)};server=org.us-west-2.redshift.amazonaws.com;database=dev"
某些驱动程序和配置可能并不支持所有的身份验证方法。
除了提前在网关中创建 ODBC 数据源外,你还可以在上传分页报表时按需创建 ODBC 数据源。 如果 ODBC 数据源不存在,上传过程会提示你创建一个:
限制和注意事项
通常,适用于在 Power BI Report Builder 中使用 ODBC 数据扩展的所有限制也同样适用于在 Power BI Gateway 中使用 ODBC 数据扩展的情况。
以下是一些限制:
对于大多数 ODBC 驱动程序,DateTime 参数需要更改 RDL 数据集中的命令文本,以将 DateTime 参数值强制转换为给定 ODBC 数据源的相应格式。
示例查询:
SELECT * FROM DEMO_DB.PUBLIC.DATES WHERE DATE < DATE(?)
注意
一些数据源可能要求使用特定格式。 你可以使用表达式来设置上面示例中参数的格式。 例如
=Format(Parameters!Date.Value, "yyyy-MM-dd")
。对于一些 ODBC 驱动程序,网关和 Power BI Report Builder 之间的行为有些不同。 这可能适用于所有、部分或仅一个驱动程序。 一个示例是,Simba-BigQuery 查询需要强制转换参数(如果它不是字符串类型)。
示例错误字符串:“此报表使用的数据源返回了一个错误。 访问目标数据源时遇到异常 ERROR [42000] [Simba][BigQuery] (70) 无效查询: 参数类型的运算符 = 没有匹配的签名: INT64, STRING。 支持的签名: ANY = ANY at [2:7]”
对 INT64 列进行正确的强制转换的示例查询:
SELECT * FROM 'teamplz.Sample.SampleTable' WHERE DataID=CAST(? as INT64)
如果由给定 ODBC 驱动程序或后端公开的任何特殊数据类型都不能直接映射到 ADO.Net 数据类型,那么这些数据类型将不受支持。 例如 Snowflake Array 数据类型。
通常不支持 ODBC 驱动程序使用无参数存储过程。 不过,Amazon Redshift 驱动程序具有受支持的输入/输出参数。