管理网关支持

测试连接

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

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

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

(dataSourcePath) as list => ...

dataSourcePath 是函数的数据源路径值,返回值是由以下内容组成的列表:

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

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

注释

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

示例:没有必需参数的连接器

下面的代码片段为数据源实现 TestConnection,没有必需的参数(如 TripPin 教程中找到的参数)。 无必需参数(称为“Singletons”)的连接器在测试连接时,不需要用户提供的输入(凭据除外)。 在这种情况下,该值 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"
];