Включение DirectQuery для соединителя на основе ODBC
Встроенная функция Odbc.DataSource M — это рекомендуемый способ создания пользовательских соединителей для источников данных с существующим драйвером ODBC и (или) поддержкой синтаксиса SQL-запроса. Упаковка функции Odbc.DataSource позволяет соединителю наследовать поведение свертывания запросов по умолчанию на основе возможностей, сообщаемых драйвером. Это поведение позволяет подсистеме M создавать инструкции SQL на основе фильтров и других преобразований, определенных пользователем в интерфейсе Power Query, без необходимости предоставлять эту логику в самом соединителе.
Расширения ODBC могут дополнительно включить режим DirectQuery, позволяя Power BI динамически создавать запросы во время выполнения без предварительного кэширования модели данных пользователя.
Примечание
Включение поддержки DirectQuery повышает уровень сложности и сложности соединителя. Если DirectQuery включен, Power BI запрещает подсистеме M компенсировать операции, которые не могут быть полностью отправлены в базовый источник данных.
В этой статье предполагается знакомство с созданием базового пользовательского соединителя.
См. пример SqlODBC для большинства примеров кода в следующих разделах. Другие примеры можно найти в каталоге примеров ODBC.
Модуль M предоставляет две функции источника данных, связанные с ODBC: Odbc.DataSource и Odbc.Query.
Функция Odbc.DataSource предоставляет таблицу навигации по умолчанию со всеми базами данных, таблицами и представлениями из системы. Эта функция также поддерживает свертывание запросов и позволяет выполнять различные параметры настройки. Большинство расширений на основе ODBC используют эту функцию в качестве основной функции расширяемости. Функция принимает два аргумента: строка подключения и запись параметров для переопределения поведения.
Функция Odbc.Query позволяет выполнять инструкции SQL с помощью драйвера ODBC. Он выступает в качестве сквозного руководства для выполнения запроса. В отличие от функции Odbc.DataSource, она не предоставляет функции свертывания запросов и требует, чтобы sql-запросы были предоставлены соединителем (или конечным пользователем). При создании пользовательского соединителя эта функция обычно используется для выполнения запросов для получения метаданных, которые могут не предоставляться через обычные каналы ODBC. Функция принимает два аргумента: строка подключения и SQL-запрос.
Пользовательские соединители могут принимать любое количество аргументов функции. Но чтобы оставаться в соответствии со встроенными функциями источника данных, которые поставляется с Power Query, рекомендуется использовать следующие рекомендации.
Требовать минимальный набор параметров, используемых для установления подключения к серверу. Чем меньше параметров пользователям необходимо предоставить, тем проще использовать соединитель.
Хотя можно определить параметры с фиксированным числом значений (например, раскрывающимся списком в пользовательском интерфейсе), перед проверкой подлинности пользователя вводятся параметры. Все значения, которые можно обнаружить программным способом после проверки подлинности пользователя (например, каталога или имени базы данных), должны быть выбраны с помощью навигатора. Поведение по умолчанию для функции Odbc.DataSource заключается в возврате иерархической таблицы навигации, состоящей из имен каталога (базы данных), схемы и таблицы. Однако это поведение можно переопределить в соединителе.
Если вы чувствуете, что пользователи обычно знают, какие значения нужно ввести для элементов, которые они будут выбирать из навигатора (например, имя базы данных), сделайте эти параметры необязательными. Параметры, которые можно обнаружить программным способом, не должны быть обязательными.
Последний параметр для функции должен быть необязательной записью с именем "параметры". Этот параметр обычно позволяет расширенным пользователям задавать общие свойства, связанные с ODBC (например
CommandTimeout
, устанавливать переопределения поведения, характерные для соединителя, и позволяет в будущем расширяемость без влияния обратной совместимости для функции).Аргументы, связанные с безопасностью и учетными данными, никогда не должны быть частью параметров функции источника данных, так как значения, введенные в диалоговом окне подключения, сохраняются в запросе пользователя. Параметры, связанные с учетными данными, должны быть указаны в рамках поддерживаемых методов проверки подлинности соединителя.
По умолчанию все необходимые параметры для функции источника данных учитываются в значении пути источника данных, используемом для идентификации учетных данных пользователя.
Хотя пользовательский интерфейс встроенной функции Odbc.DataSource предоставляет раскрывающийся список, позволяющий пользователю выбрать DSN, эта функция недоступна через расширяемость. Если конфигурация источника данных достаточно сложна, чтобы требовать полностью настраиваемого диалогового окна конфигурации, рекомендуется, чтобы конечные пользователи предварительно настроили системное доменное имя и приняли в качестве текстового поля имя DSN.