处理网关支持

测试连接

自定义连接器支持适用于个人模式和标准模式的本地数据网关。 这两种网关模式均支持导入直接查询仅在标准模式下受支持。 目前,仅网关管理员(而不是其他数据源用户)才支持通过网关实现自定义连接器的 OAuth。

在 Power BI 自定义数据连接器功能处于预览状态期间,实现 TestConnection 功能的方法可能会更改。

若要支持通过本地数据网关安排的刷新,连接器必须实现 TestConnection 处理程序。 当用户为源配置凭据时调用该函数,并用于确保这些凭据有效。 TestConnection 处理程序会在数据源种类记录中进行设置,并具有以下签名:

(dataSourcePath) as list => ...

其中,dataSourcePath 是函数的数据源路径值,而返回值则由包含以下内容的列表组成:

  • 要调用的函数的名称(此函数必须标记为 #shared,且通常是主数据源函数)。
  • 要传递给函数的一个或多个参数。

如果函数的调用导致错误,则会将 TestConnection 视为失败,且不会持久保存凭据。

注意

如上所述,TestConnection 提供的函数名称必须是 shared 成员。

示例:缺少必要参数的连接器

以下代码片段将为缺少必要参数(例如 TripPin 教程中找到的参数)的数据源实现 TestConnection。 缺少必要参数(被称为“单一实例”)的连接器无需任何用户提供的输入来测试连接(而非凭据)。 在此情况下,dataSourcePath 值等于数据源种类的名称,且可忽略。 TripPin.Contents 函数会以不带其他参数的方式进行调用。

TripPin = [
    TestConnection = (dataSourcePath) => { "TripPin.Contents" },
    Authentication = [
        Anonymous = []
    ],
    Label = "TripPin"
];

示例:带 URL 参数的连接器

如果数据源函数具有 Uri.Type 类型的单个必要参数,则其 dataSourcePath 等于用户提供的 URL。 以下代码片段显示了 GitHub 示例中的 TestConnection 实现。

GithubSample = [
    TestConnection = (dataSourcePath) => {"GithubSample.Contents", dataSourcePath},
    Authentication = [
        OAuth = [
            StartLogin = StartLogin,
            FinishLogin = FinishLogin,
            Label = Extension.LoadString("AuthenticationLabel")
        ]
    ]
];

示例:带必要参数的连接器

如果数据源函数具有多个参数或单个非 URL 参数,则 dataSourcePath 值为包含这些参数的 JSON 字符串。 以下代码片段来自 DirectQueryForSQL 示例。

DirectSQL = [
    TestConnection = (dataSourcePath) =>
        let
            json = Json.Document(dataSourcePath),
            server = json[server],
            database = json[database]
        in
            { "DirectSQL.Database", server, database },
    Authentication = [
        Windows = [],
        UsernamePassword = []
    ],
    Label = "Direct Query for SQL"
];