Power BI - динамическое создание запросов

Я использую Power BI Desktop для импорта данных из BLOB-объекта Azure, а затем генерирую несколько запросов для публикации на онлайн-портале. Один из моих промежуточных запросов генерирует таблицу [имя] [таблица], например:

Запрос: ВСЕ ТАБЛИЦЫ

name  | table 
--------------
name1 | Table1
name2 | Table2
name3 | Table3

Имена уникальны (сгруппированы по имени на предыдущем шаге запроса), и все ссылки таблицы указывают на таблицу, которую я хочу использовать в новом запросе. В настоящее время мне приходится вручную генерировать новые запросы из каждой таблицы, а затем применять настраиваемую функцию запроса к источнику запроса, чтобы получить желаемый окончательный запрос для экспорта, например:

Запрос: NAME1

let
    Source = #"ALL TABLES",
    #"Name1" = DoSomething(Source, 0)
in
    #"Name1"

Запрос: NAME2

let
    Source = #"ALL TABLES",
    #"Name2" = DoSomething(Source, 1)
in
    #"Name2"

и т.п.

Пока это нормально, пока мы настраиваемся, у нас не так много записей. Однако, как только мы начнем помещать реальные данные в BLOB-объект Azure, количество строк и запросов, которые нам нужно сгенерировать, начнет расти, и делать это вручную уже невозможно.

В идеале я мог бы добавить последний шаг к запросу ALL TABLES, который просматривает все строки и генерирует новые запросы из таблиц в них. Этот список также потенциально будет меняться с каждым обновлением, поэтому в идеале он должен автоматически генерировать новые запросы при перезагрузке данных из BLOB-объекта Azure.

Есть ли способ сделать это с помощью запроса Power BI? В качестве альтернативы, может ли кто-нибудь, где я мог бы посмотреть, как заставить внешний скрипт генерировать это в проекте Power BI (скажем, автоматический скрипт, запускаемый ежедневно с нашего сервера сборки)?


person Zepee    schedule 24.02.2016    source источник
comment
Я не уверен, чего вы пытаетесь достичь со всеми этими вопросами. Не могли бы вы пояснить, зачем вам нужен новый запрос для каждого из них? Если вы пытаетесь сгруппировать строки в группы (аналогично словарю на C #), вы можете просто использовать функцию List.Generate, чтобы вернуть список с каждой ячейкой, содержащей запись. Запись будет содержать ключевой столбец и список желаемых строк. Это был бы один вопрос. Затем вы можете использовать функцию «справочного запроса» (в меню, вызываемом правой кнопкой мыши), чтобы получить желаемый список на основе значения ключа. Вы можете обернуть это функцией, если хотите, чтобы сделать ее более удобной.   -  person Lukasz P.    schedule 25.02.2016
comment
Таблица «все таблицы» в основном содержит все типы событий, которые мы отслеживаем, и ссылку на таблицу, определяющую каждое из их индивидуальных свойств. Поскольку каждый тип события имеет разные свойства, размещение всего этого в одной таблице сделало бы его чрезвычайно разреженным, поэтому мы хотим, чтобы для каждого типа была доступна отдельная таблица. Мне было интересно найти способ автоматически создавать эти таблицы на рабочем столе Power BI, чтобы нам не приходилось вручную обновлять их при добавлении новых событий в нашу систему отслеживания.   -  person Zepee    schedule 29.02.2016


Ответы (1)


Для действительно динамических сред, подобных той, которую вы описываете, я бы порекомендовал вам использовать прямой источник запросов, такой как azure SQL, для загрузки ваших данных. Когда вы это сделаете, изменения схемы на вашем сервере немедленно становятся доступными для ваших пользователей без необходимости повторного создания запросов.

Если вы продолжите свой путь, не будет полностью автоматического способа добавления новых запросов в файлы рабочего стола Power BI. Когда вы добавляете новое событие, вам необходимо отредактировать файл, добавить новый запрос и убедиться, что он добавлен в модель данных.

person Lukasz P.    schedule 03.03.2016
comment
Да, у меня было ощущение, что это могло быть так, но это стоило проверить. Спасибо за вклад! - person Zepee; 03.03.2016