Я помогаю моей команде решить проблему с отчетом Power BI, который мы разрабатываем. У нас есть довольно сложная модель данных в исходной базе данных SQL, поэтому мы создали 5-6 представлений для лучшего управления данными. У нас есть требование использовать DirectQuery, поскольку одним из ключевых требований к отчету является то, что самые актуальные данные в базе данных видны, а не имеют задержки при загрузке / кэшировании данных. У нас также есть один источник данных, только одна база данных.
Когда мы запускаем отчет, мы видим всплеск 200-500 подключений к базе данных от конкретного пользователя для источника данных отчета, и эти подключения не закрываются. Это явно проблема и неустойчива для любого продукта. У нас есть открытая заявка с премиум-поддержкой Microsoft на решение о том, что соединения не закрываются, но в то же время мне интересно, делаем ли мы что-то неправильно в отчете?
Когда я просматриваю запросы в редакторе запросов, мы в основном имеем один запрос для каждого представления, и это просто:
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, есть ли какие-либо предложения по поводу того, что мы можем посмотреть / устранить неполадки / изменить в отчете?
Спасибо!