Обработка пути источника данных
Модуль M определяет источник данных с помощью сочетания типа и пути. При обнаружении источника данных во время оценки запроса подсистема M пытается найти соответствующие учетные данные. Если учетные данные не найдены, подсистема возвращает специальную ошибку, которая приводит к запросу учетных данных в Power Query.
Значение Kind исходит из определения типа источника данных.
Значение пути является производным от необходимых параметров функции источника данных. Необязательные параметры не учитываются в идентификаторе пути источника данных. В результате все функции источника данных, связанные с типом источника данных, должны иметь одинаковые параметры. Существует специальная обработка функций с одним параметром типа Uri.Type
. Дополнительные сведения см. в разделе "Функции" с параметром URI.
Вы можете увидеть пример хранения учетных данных в диалоговом окне параметров источника данных в Power BI Desktop. В этом диалоговом окне тип представлен значком, а значение пути отображается в виде текста.
Примечание.
При изменении необходимых параметров функции источника данных во время разработки ранее сохраненные учетные данные больше не работают (так как значения пути больше не соответствуют). При изменении параметров функции источника данных необходимо удалить все сохраненные учетные данные. При обнаружении несовместимых учетных данных может возникнуть ошибка во время выполнения.
Формат пути к источнику данных
Значение пути для источника данных является производным от необходимых параметров функции источника данных. Требуемые параметры можно исключить из пути, добавив DataSource.Path = false
в метаданные функции. Дополнительные сведения см. в разделе "Исключение необходимых параметров из пути источника данных".
По умолчанию в диалоговом окне параметров источника данных можно увидеть фактическое строковое значение в Power BI Desktop и в запросе учетных данных. Если определение типа источника данных включало Label
значение, вместо этого вы увидите значение метки.
Например, функция источника данных в примере HelloWorldWithDocs имеет следующую подпись:
HelloWorldWithDocs.Contents = (message as text, optional count as number) as table => ...
Функция имеет один обязательный text
параметр типаmessage
и используется для вычисления пути к источнику данных. Необязательный параметр (count
) игнорируется. Путь будет отображаться следующим образом:
Запрос учетных данных
Пользовательский интерфейс параметров источника данных
При определении значения метки значение пути к источнику данных не отображается:
Примечание.
В настоящее время рекомендуется не включать метку для источника данных, если функция имеет необходимые параметры, так как пользователи не смогут различать введенные учетные данные. Мы надеемся улучшить это в будущем (т. е. разрешить соединителям данных отображать собственные путь к источнику данных).
Исключение обязательных параметров из пути к источнику данных
Если требуется, чтобы параметр функции не включался в путь к источнику данных, можно добавить DataSource.Path = false
в метаданные документации по функциям. Это свойство можно добавить в один или несколько параметров для функции. Это поле удаляет значение из пути к источнику данных (то есть больше не передается в TestConnection
функцию), поэтому его следует использовать только для параметров, которые не требуются для идентификации источника данных или различия учетных данных пользователей.
Например, соединитель в примере HelloWorldWithDocs должен иметь разные учетные данные для разных message
значений.
Добавление DataSource.Path = false
к message
параметру удаляет его из вычисления пути источника данных, эффективно делая соединитель "singleton". Все вызовы HelloWorldWithDocs.Contents
обрабатываются как один и тот же источник данных, и пользователь предоставляет учетные данные только один раз.
HelloWorldType = type function (
message as (type text meta [
DataSource.Path = false,
Documentation.FieldCaption = "Message",
Documentation.FieldDescription = "Text to display",
Documentation.SampleValues = {"Hello world", "Hola mundo"}
]),
optional count as (type number meta [
Documentation.FieldCaption = "Count",
Documentation.FieldDescription = "Number of times to repeat the message",
Documentation.AllowedValues = { 1, 2, 3 }
]))
as table meta [
Documentation.Name = "Hello - Name",
Documentation.LongDescription = "Hello - Long Description",
Documentation.Examples = {[
Description = "Returns a table with 'Hello world' repeated 2 times",
Code = "HelloWorldWithDocs.Contents(""Hello world"", 2)",
Result = "#table({""Column1""}, {{""Hello world""}, {""Hello world""}})"
],[
Description = "Another example, new message, new count!",
Code = "HelloWorldWithDocs.Contents(""Goodbye"", 1)",
Result = "#table({""Column1""}, {{""Goodbye""}})"
]}
];
Функции с параметром URI
Так как источники данных с идентификатором на основе URI настолько распространены, при работе с путями источника данных на основе URI существует специальная обработка в пользовательском интерфейсе Power Query. При обнаружении источника данных на основе URI диалоговое окно учетных данных предоставляет раскрывающийся список, который позволяет пользователю выбрать базовый путь, а не полный путь (и все пути между ними).
Как Uri.Type
указано, а не примитивный тип языка M, необходимо использовать функцию Value.ReplaceType, чтобы указать, что текстовый параметр должен рассматриваться как универсальный код ресурса (URI).
shared GithubSample.Contents = Value.ReplaceType(Github.Contents, type function (url as Uri.type) as any);