Максимальное подключение Power BI к БД: ( Можем ли мы заполнить несколько таблиц одним вызовом Sql.Database?

#azure-sql-database #powerbi #powerquery

#azure-sql-database #powerbi #powerquery

Вопрос:

Я помогаю своей команде устранять неполадки в отчете Power BI, который мы разрабатываем. У нас довольно сложная модель данных в исходной базе данных SQL, поэтому мы создали 5-6 представлений для лучшего управления данными. У нас есть требование использовать DirectQuery, поскольку одним из ключевых требований к отчету является отображение самых последних данных в базе данных, а не задержка загрузки / кэширования данных. У нас также есть единый источник данных, только одна база данных.

Когда мы запускаем отчет, мы видим всплеск 200-500 подключений к базе данных от конкретного пользователя для источника данных отчета, и эти подключения не закрываются. Это явно проблема и неприемлемо для любого продукта. У нас открыт запрос в службу поддержки Microsoft premium для решения проблем, связанных с тем, что соединения не закрываются, но в то же время мне интересно, делаем ли мы что-то не так в отчете?

Когда я просматриваю запросы в редакторе запросов, у нас в основном есть один запрос для каждого представления, и это простой:

 let
  Source = Sql.Database(Server, Database)
  query_view_name = Source{[Schema ......]}[Data]
in
  query_view_name
  

(У меня нет исходного кода передо мной, но в этом суть.)

Мне кажется, основываясь на аналитике в базе данных, что «Sql.Database» открывает новое соединение при каждом вызове этого представления. А при 5-6 представлениях это как минимум 5-6 подключений; затем каждый раз, когда меняется фильтр, это больше подключений, и он соединяется оттуда, пока пул подключений к базе данных не будет исчерпан.

Есть ли способ заполнить все таблицы, используя одно подключение к базе данных? Зачем Power BI использовать так много подключений? Можем ли мы заполнить несколько таблиц в расширенном редакторе запросов? Используя DirectQuery, есть ли какие-либо предложения относительно того, что мы можем просмотреть / устранить неполадки / изменить в отчете?

Спасибо!

Ответ №1:

Power BI устанавливает несколько подключений к базе данных для параллельной загрузки нескольких таблиц. Если вы этого не хотите, вы можете отключить его из Options -> Current file -> Data Load -> Enable parallel loading of tables :

введите описание изображения здесь

Имейте в виду, что отключение этой опции, скорее всего, увеличит время загрузки модели.

Возможно, вы захотите взглянуть на Maximum connections per data source опцию в Options -> Current file -> Direct query и использовать весь раздел Query reduction . Включение Slicer selection и Filter selection включение этой страницы настоятельно рекомендуется для случаев, подобных вашему, но вам нужно обучить своих пользователей тому, что им нужно щелкнуть apply , чтобы увидеть результаты.

Ответ №2:

ОК.

У нас довольно сложная модель данных в исходной базе данных SQL, поэтому мы создали 5-6 представлений для лучшего управления данными.

Это нормально.

У нас есть требование использовать DirectQuery,

Но теперь у вас будут плохие времена. DirectQuery сложные представления — это путь к низкой производительности. Запросы к вашим представлениям добавят объединения, потенциально по всей модели для контекста фильтра, а также для измерения и вычисляемых выражений столбцов. И эти запросы будут динамически меняться в зависимости от взаимодействия пользователя с отчетом. Поэтому очень сложно увидеть и протестировать все возможные запросы.

Основное руководство — использовать режим импорта для представлений и использовать DirectQuery только для правильно проиндексированных таблиц. Чтобы обеспечить свежесть данных, вы можете заменить представления таблицами, которые вы загружаете и обновляете из своего приложения, или, возможно, использовать индексированное представление и т. Д.