处理数据访问

数据源函数

数据连接器可包装和自定义 M 库中数据源函数的行为。 例如,REST API 的扩展将使用 Web.Contents 函数发出 HTTP 请求。 目前,已启用一组有限的数据源函数来支持扩展性。

示例:

[DataSource.Kind="HelloWorld", Publish="HelloWorld.Publish"]
shared HelloWorld.Contents = (optional message as text) =>
    let
        message = if (message <> null) then message else "Hello world"
    in
        message;

数据源种类

在扩展中标记为 shared 的函数可通过在附带数据源定义记录名称的函数上包括 DataSource.Kind 文本属性从而与特定数据源相关联。 数据源记录定义了数据源支持的身份验证类型和基本品牌信息(如显示名称/标签)。 记录的名称将成为其唯一标识符。

与同一数据源关联的每个函数均须具有相同的必要函数参数,其中包括名称、类型和顺序。 (由于数据源种类,如果某一参数被标记 optional 或其元数据包含 DataSource.Path = false,则不会将其视为必要参数。)

特定数据源种类的函数只能使用与该种类关联的凭据。 凭据在运行时会通过基于该函数的必要参数的组合来执行查找,从而进行标识。 有关如何标识凭据的详细信息,请参阅数据源路径

示例:

HelloWorld = [
    Authentication = [
        Implicit = []
    ],
    Label = Extension.LoadString("DataSourceLabel")
];

属性

下表列出了数据源定义记录的字段。

字段 类型 详细信息
身份验证 record 指定数据源支持的一种或多种身份验证类型。 至少需要一个种类。 每个种类都会在 Power Query 凭据提示符中显示为一个选项。 有关详细信息,请参阅身份验证种类
Label text (可选)凭据对话框中此扩展的友好显示名称。
SupportsEncryption 逻辑 (可选)如果为 true,UI 将显示使用加密连接以连接到数据源的选项。 这通常会用于采用非加密回退机制(通常为 ODBC 或基于 ADO.NET 的源)的数据源。

发布到 UI

数据源定义记录类似,“发布”记录会为 Power Query UI 提供它在获取数据对话框中公开此扩展所需的信息。

示例:

HelloWorld.Publish = [
    Beta = true,
    ButtonText = { Extension.LoadString("FormulaTitle"), Extension.LoadString("FormulaHelp") },
    SourceImage = HelloWorld.Icons,
    SourceTypeImage = HelloWorld.Icons
];

HelloWorld.Icons = [
    Icon16 = { Extension.Contents("HelloWorld16.png"), Extension.Contents("HelloWorld20.png"), Extension.Contents("HelloWorld24.png"), Extension.Contents("HelloWorld32.png") },
    Icon32 = { Extension.Contents("HelloWorld32.png"), Extension.Contents("HelloWorld40.png"), Extension.Contents("HelloWorld48.png"), Extension.Contents("HelloWorld64.png") }
];

属性

下表列出了发布记录的字段。

字段 类型 详细信息
ButtonText list 文本项列表。 第一项定义了 Power BI 获取数据 对话框中数据源图标旁显示的名称。 第二项(可选)定义了鼠标悬停于前一名称时显示的工具提示。
类别 text 扩展应在获取数据对话框中显示的位置。 目前,唯一采用特殊处理的类别值为 AzureDatabase。 所有其他值最终均归为“其他”类别。
Beta 逻辑 (可选)设为 true 时,UI 将在连接器名称旁边显示预览/测试版标识符,同时显示一个警告对话框,指示连接器的实施可能会发生重大更改。
LearnMoreUrl text (可选)指向包含有关此数据源或连接器的详细信息的网站 URL。
SupportsDirectQuery 逻辑 (可选)为扩展启用直接查询。
SourceImage record (可选)包含二进制图像列表的记录(使用 Extension.Contents 方法从扩展文件中获取)。 该记录包含两个字段(Icon16 和 Icon32),且每个字段均有自己的列表。 每个图标的大小应各不相同。
SourceTypeImage record (可选)与 SourceImage 类似,其中不含以下约定:对于很多开箱即用的连接器,系统会显示工作表图标,同时会在右下角显示特定于源的图标。 为 SourceTypeImage 使用不同图标集为可选操作,因为很多扩展只会重复使用这两个字段的同一图标集。