Использование DirectQuery в Power BI DesktopUse DirectQuery in Power BI Desktop

При подключении к источнику данных в Power BI Desktop всегда можно импортировать копию данных в Power BI Desktop.With Power BI Desktop, when you connect to your data source, it is always possible to import a copy of the data into the Power BI Desktop. Для некоторых источников данных доступен альтернативный подход: прямое подключение к источнику данных с помощью DirectQuery.For some data sources, an alternative approach is available: connect directly to the data source using DirectQuery.

Поддерживаемые источники данныхSupported Data Sources

Полный список источников данных, поддерживающих DirectQuery, см. в статье Источники данных, поддерживаемые DirectQuery.For a full listing of data sources that support DirectQuery, see Data sources supported by DirectQuery.

Подключение с помощью DirectQueryHow to Connect using DirectQuery

При использовании команды Получить данные для подключения к источнику данных, поддерживаемому функцией DirectQuery, отображается диалоговое окно с вопросом о способе подключения.When you use Get Data to connect to a data source supported by DirectQuery, the connection window lets you select how you want to connect.

Варианты Импорт и DirectQuery имеют следующие различия:The differences between selecting Import and DirectQuery are the following:

Импорт — выбранные таблицы и столбцы импортируются в Power BI Desktop.Import – the selected tables and columns are imported into Power BI Desktop. При создании визуализации или взаимодействии с ней Power BI Desktop использует импортированные данные.As you create or interact with a visualization, Power BI Desktop uses the imported data. Вам необходимо обновить данные (при этом снова производится импорт всего набора данных), чтобы просмотреть изменения, внесенные в базовые данные с момента первоначального импорта или самой последней операции обновления.You must refresh the data, which imports the full data set again, to see any changes that occurred to the underlying data since the initial import or the most recent refresh.

DirectQuery — данные не импортируются и не копируются в Power BI Desktop.DirectQuery – no data is imported or copied into Power BI Desktop. Для реляционных источников выбранные таблицы и столбцы отображаются в списке Поля.For relational sources, the selected tables and columns appear in the Fields list. Для многомерных источников, таких как SAP Business Warehouse, измерения и меры выбранного куба отображаются в списке Поля.For multi-dimensional sources like SAP Business Warehouse, the dimensions and measures of the selected cube appear in the Fields list. При создании визуализации или взаимодействии с ней Power BI Desktop запрашивает базовый источник данных, то есть вы всегда видите актуальные данные.As you create or interact with a visualization, Power BI Desktop queries the underlying data source, which means you’re always viewing current data.

При использовании DirectQueryдоступно множество функций моделирования и преобразования данных, хотя и с некоторыми ограничениями.Many data modeling and data transformations are available when using DirectQuery, though with some limitations. При создании визуализации или взаимодействии с ней должен запрашиваться базовый источник, а время, необходимое для обновления визуализации, зависит от производительности базового источника данных.When creating or interacting with a visualization, the underlying source must be queried and the time necessary to refresh the visualization is dependent on the performance of the underlying data source. Если данные, необходимые для обслуживания запроса, недавно запрашивались, Power BI Desktop использует эти последние данные для сокращения времени, необходимого для отображения визуализации.When the data necessary to service the request has recently been requested, Power BI Desktop uses recent data to reduce the time required to display the visualization. Выбор элемента Обновить на вкладке Главная ленты обеспечивает обновление всех визуализаций с использованием актуальных данных.Selecting Refresh from the Home ribbon will ensure all visualizations are refreshed with current data.

В статье Power BI и DirectQuery подробно описывается DirectQuery.The Power BI and DirectQuery article describes DirectQuery in detail. Также в следующих разделах приведены дополнительные сведения о преимуществах, ограничениях и важных аспектах использования функции DirectQuery.Also, see the following sections for more information about benefits, limitations, and important considerations when using DirectQuery.

Преимущества использования DirectQueryBenefits of using DirectQuery

Использование DirectQuery дает несколько преимуществ.There are a few benefits to using DirectQuery:

  • DirectQuery позволяет создавать визуализации на базе очень больших наборов данных, где в противном случае было бы нецелесообразно сначала импортировать все данные с предварительным агрегированием.DirectQuery lets you build visualizations over very large datasets, where it otherwise would be unfeasible to first import all of the data with pre-aggregation
  • Изменения в базовых данных могут потребовать обновления данных, а для некоторых отчетов отображение актуальных данных может потребовать передачи большого объема данных, делая повторный импорт данных нецелесообразным.Underlying data changes can require a refresh of data, and for some reports, the need to display current data can require large data transfers, making re-importing data unfeasible. Отчеты DirectQuery, наоборот, всегда используют актуальные данные.By contrast, DirectQuery reports always use current data
  • Ограничение в 1 ГБ для набора данных не касается DirectQuery.The 1 GB dataset limitation does not apply to DirectQuery

Ограничения DirectQueryLimitations of DirectQuery

В настоящее время существует несколько ограничений, связанных с использованием DirectQuery.There are currently a few limitations to using DirectQuery:

  • Все таблицы должны поступать из одной базы данных.All tables must come from a single database
  • Если запрос в редакторе запросов слишком сложный, произойдет ошибка.If the Query Editor query is overly complex, an error will occur. Чтобы устранить ошибку, необходимо удалить проблемный шаг в редакторе запросов или импортировать данные вместо использования DirectQuery.To remedy the error you must either delete the problematic step in Query Editor, or Import the data instead of using DirectQuery. Для многомерных источников, таких как SAP Business Warehouse, нет редактора запросов.For multi-dimensional sources like SAP Business Warehouse, there is no Query Editor
  • Фильтровать связи можно только в одном направлении, а не в обоих. Но вы можете включить перекрестную фильтрацию в обоих направлениях для DirectQuery в качестве предварительной версии функции.Relationship filtering is limited to a single direction, rather than both directions (though it is possible to enable cross filtering in both directions for DirectQuery as a Preview feature). Для многомерных источников, таких как SAP Business Warehouse, определенные в модели связи отсутствуют.For multi-dimensional sources like SAP Business Warehouse, there are no relationships defined in the model
  • Логика операций со времен недоступна в DirectQuery.Time intelligence capabilities are not available in DirectQuery. Например, в режиме DirectQuery специальная обработка столбцов даты (год, квартал, месяц, день и т. д.) не поддерживается.For example, special treatment of date columns (year, quarter, month, day, so on) are not supported in DirectQuery mode.
  • По умолчанию ограничения размещаются в выражения DAX, (разрешены в мерах). Дополнительные сведения см. в следующем абзаце после этого маркированного списка.By default, limitations are placed on DAX expressions allowed in measures; see the following paragraph (after this bulleted list) for more information
  • При возврате данных с помощью DirectQuery существует ограничение в 1 миллион строк.There is a 1 million row limit for returning data when using DirectQuery. Это не влияет на агрегаты и вычисления, используемые для создания набора данных, возвращаемого с помощью DirectQuery. Ограничивается только количество возвращаемых строк.This does not affect aggregations or calculations used to create the dataset returned using DirectQuery, only the rows returned. Например, можно объединить 10 миллионов строк из запроса, выполняемого в источнике данных, и вернуть точные результаты этого агрегирования в Power BI с помощью DirectQuery, если данные, возвращаемые в Power BI, содержат меньше 1 миллиона строк.For example, you can aggregate 10 million rows with your query that runs on the data source, and accurately return the results of that aggregation to Power BI using DirectQuery as long as the data returned to Power BI is less than 1 million rows. Если из DirectQuery будет возвращено более 1 миллиона строк, в Power BI появится сообщение об ошибке.If more than 1 million rows would be returned from DirectQuery, Power BI returns an error.

Чтобы обеспечить приемлемую производительность запросов, отправляемых в базовый источник данных, ограничения накладываются на меры по умолчанию.To ensure that queries sent to the underlying data source have acceptable performance, limitations are imposed on measures by default. Опытные пользователи могут обойти это ограничение, выбрав пункты меню Файл > Параметры, после — Параметры > Параметры и настройки > DirectQuery, а затем использовав команду Разрешить неограниченные меры в режиме DirectQuery.Advanced users can choose to bypass this limitation by selecting File > Options and then Settings > Options and settings > DirectQuery, then selecting the option Allow unrestricted measures in DirectQuery mode. При выборе этого параметра может использоваться любое выражение DAX, которое является допустимым для меры.When that option is selected, any DAX expression that is valid for a measure can be used. Однако пользователям необходимо иметь в виду, что в режиме DirectQuery некоторые выражения, которые оптимально работают при импорте данных, могут стать причиной очень медленного выполнения запросов к серверному источнику.Users must be aware, however, that some expressions that perform very well when the data is imported may result in very slow queries to the backend source when in DirectQuery mode.

Важные аспекты использования DirectQueryImportant considerations when using DirectQuery

При использовании DirectQuery следует учитывать три аспекта.The following three points should be taken into consideration when using DirectQuery:

  • Производительности и нагрузка. Все запросы DirectQuery отправляются в базу данных-источник, поэтому время обновления визуализации зависит от того, как быстро источник на сервере возвратит результаты запросов.Performance and load - All DirectQuery requests are sent to the source database, so the time required to refresh a visual is dependent on how long that back-end source takes to respond with the results from the query (or queries). При использовании DirectQuery для визуализаций стандартным временем получения запрошенных данных считается пять секунд и меньше. Максимальное время получения ответа не должно превышать 30 секунд.The recommended response time (with requested data being returned) for using DirectQuery for visuals is five seconds or less, with a maximum recommended results response time of 30 seconds. Если на получение ответа уходит больше времени, работа с отчетом сильно затрудняется.Any longer, and the experience of a user consuming the report becomes unacceptably poor. Кроме того, если отчет опубликован в службе Power BI, все запросы, выполняющиеся более пяти минут, возвращают ошибку о превышении времени ожидания. В этом случае пользователь получает сообщение об ошибке.In addition, once a report is published to the Power BI service, any query that takes longer than a few minutes will timeout, and the user will receive an error.

    Также необходимо учитывать нагрузку на базу данных-источник. Нагрузка зависит от количества пользователей Power BI, которые используют опубликованные отчеты.Load on the source database should also be considered, based on the number of Power BI users who will consume the published report. Защита на уровне строк (RLS) может тоже оказывать существенное влияние. Для плитки панели мониторинга, в которой не применяется RLS и с которой одновременно могут работать несколько пользователей, достаточного одного запроса к базе данных. Если же RLS применяется, каждое обновление плитки обычно создает отдельный запрос для каждого пользователя, что значительно увеличивает нагрузку на базу данных-источник и потенциально влияет на производительность.Using Row Level Security (RLS) can have a significant impact as well; a non-RLS dashboard tile shared by multiple users results in a single query to the database, but using RLS on a dashboard tile usually means the refresh of a tile requires one query per user, thus significantly increasing load on the source database and potentially impacting performance.

    Power BI создает максимально эффективные запросы,Power BI creates queries that are as efficient as possible. но в некоторых ситуациях созданный запрос может оказаться недостаточно эффективным, из-за чего происходит сбой обновления.Under certain situations however, the generated query may not be efficient enough to avoid refresh that would fail. Например, запрос может извлечь из источника данных на сервере свыше 1 млн строк. В этом случае возникает такая ошибка:One example of this situation is when a generated query would retrieve an excessively large number of rows (more than 1 million) from the back-end data source, in which case the following error occurs:

    The resultset of a query to external data source has exceeded
    the maximum allowed size of '1000000' rows.
    

    Такая ситуация может возникнуть с простой диаграммой, в которой есть столбец с очень большим количеством элементов и выбран параметр статистической обработки Не суммировать.This situation can occur with a simple chart that includes a very high cardinality column, with the aggregation option set to Don’t Summarize. В визуализациях нужно использовать столбцы, в которых количество элементов не превышает 1 млн, или применять соответствующие фильтры.The visual needs to only have columns with a cardinality below 1 million, or must have appropriate filters applied.

  • Безопасность. Все пользователи опубликованного отчета подключаются к источнику данных на сервере с помощью учетных данных, которые были указаны после публикации отчета в службе Power BI.Security - All users who consume a published report connect to the back-end data source using the credentials entered after publication to the Power BI service. Такая же ситуация возникает при импорте данных: все пользователи видят одинаковые данные вне зависимости от того, какие правила безопасности определены в источнике на сервере.This is the same situation as data that is imported: all users see the same data, irrespective of any security rules defined in the backend source. Пользователи, которым требуется внедрение средств безопасности на уровне пользователя с источниками DirectQuery и которые используют RLS.Customers who want per-user security implement with DirectQuery sources and use RLS. Дополнительные сведения об RLS.Learn more about RLS.
  • Поддерживаемые функции. Некоторые функции Power BI Desktop не работают в режиме DirectQuery, а некоторые имеют определенные ограничения.Supported features - Not all features in Power BI Desktop are supported in DirectQuery mode, or have some limitations. Кроме того, в службе Power BI есть некоторые возможности (например, Краткая аналитика), которые недоступны для наборов данных при использовании DirectQuery.In addition, there are some capabilities in the Power BI service (such as Quick Insights) that are not available for datasets using DirectQuery. Выбирая способ подключения к данным, учитывайте совместимость функций с DirectQuery.As such, the limitation of such features when using DirectQuery should be taken into consideration when determining whether to use DirectQuery.

Публикация в службу Power BIPublish to the Power BI service

Отчеты, созданные с помощью DirectQuery, можно опубликовать в службе Power BI.Reports created using DirectQuery can be published to the Power BI Service.

Если для источника данных не требуется локальный шлюз данных (база данных SQL Azure , хранилище данных SQL Azure или Redshift), необходимо указать учетные данные, чтобы опубликованный отчет отобразился в службе Power BI.If the data source used does not need the on-premises data gateway (Azure SQL Database, Azure SQL Data Warehouse, or Redshift), credentials must be provided before the published report will be displayed in the Power BI Service.

Вы можете указать учетные данные, выбрав значок шестеренки Параметры в Power BI, а затем выбрав элемент Параметры.You can provide credentials by selecting the Settings gear icon in Power BI, then select Settings.

Power BI отображает окно Параметры .Power BI displays the Settings window. В нем откройте вкладку Наборы данных и выберите набор данных, использующий DirectQuery, а затем выберите Изменить учетные данные.From there, select the Datasets tab and choose the dataset that uses DirectQuery, and select Edit credentials.

Пока учетные данные не указаны, открытие опубликованного отчета или изучение набора данных, созданного с помощью подключения DirectQuery к источникам данных, приводит к ошибке.Until credentials are supplied, opening a published report or exploring a dataset created with a DirectQuery connection to such data sources results in an error.

Для источников данных, отличных от базы данных SQL Azure, хранилища данных SQL Azure или Redshift, использующих DirectQuery, необходимо установить локальный шлюз данных и зарегистрировать источник данных, чтобы подключиться к данным.For data sources other than Azure SQL Database, Azure SQL Data Warehouse and Redshift that use DirectQuery, an on-premises data gateway must be installed and the data source must be registered to establish a data connection. Дополнительные сведения о локальном шлюзе данных см. здесь.You can learn more about on-premises data gateway.

Дальнейшие действияNext steps

Дополнительные сведения о DirectQuery см. в следующей статье:For more information about DirectQuery, check out the following resources: