Как обновить отчет Power BI на основе параметров в визуализации?

#powerbi #powerbi-desktop

#powerbi #powerbi-рабочий стол

Вопрос:

Как и в названии. Я хочу обновить отчет Power BI Desktop на основе параметров, например, параметров даты. Я могу создать параметры даты (и другие параметры) в редакторе запросов, так что это не тот случай. Речь идет о том, как обновить отчет Power BI (визуализацию) на основе этих параметров, созданных в редакторе запросов. Возможно ли это?

Вот пример:

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

Это фильтры в моей визуализации Power BI. На основе года / месяца (пользователь может выбрать месяц, год в фильтре) отчет должен обновляться автоматически — год и месяц (или дата) должны быть переданы в качестве параметра SQL.

Комментарии:

1. Вы говорите о slicer? В power BI, если вы измените значение в slicer, все связанные визуальные элементы мгновенно обновятся.

2. Нет, не о slicer. Я хочу передать параметр из PBI Desktop (Raport View — визуализация) в SQL через редактор запросов. Я создал параметры даты в редакторе запросов и хочу, чтобы пользователь выбирал даты для обновления данных в отчете. Итак, пользователь выбирает даты (от-до) в визуализации (может быть срез, что угодно), и эти даты передаются в SQL в качестве параметров.

Ответ №1:

Я нашел решение для этого. Ключ в том, чтобы использовать NativeQuery здесь. Шаги следующие:

  1. Создайте хранимую процедуру с параметрами (например, DateFrom и DateTo) и импортируйте данные в Power BI
  2. В редакторе PowerQuery создайте 2 параметра. Допустим, дата начала и дата окончания. Установите некоторые значения по умолчанию:

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

  1. Перейдите в «Предварительный редактор», чтобы изменить M-код. Правильный отчет должен быть следующим:
 let
    Source = Sql.Database("ServerName12", "Base2"),
    Query = Value.NativeQuery(
            Source, 
            "EXEC [dbo].[storedProcedure_XYZ] @DateFrom = '" amp; Date.ToText(startDate) amp; "', @DateTo = '" amp; Date.ToText(endDate) amp; "'")
    
in
    
Query    
  

@DateFrom и @DateTo являются параметрами SQL, параметры PQ (StartDate и EndDate) должны быть назначены им способом, который я показал выше.

Важно то, что вы не можете поместить EXEC …. оператор в ‘Поле SQL statement’ для импорта данных (конечно, вам нужно заполнить имя сервера и т.д.). Я имею в виду, что вы можете сделать это сначала для импорта необработанных данных (см. 1-й пункт), Но после этого это поле должно оставаться пустым. Теперь вся работа выполняется вашим M-кодом с использованием собственного запроса.

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

  1. После нажатия кнопки «Ок» в вашем «Расширенном редакторе» (см. 3-й пункт) ваш SQL-запрос будет выполнен вместе с параметрами. Теперь вы можете видеть обновленные данные в Power BI.

  2. Перейдите на уровень визуализации в вашем Power BI. Нажмите на эту маленькую стрелку вниз для «Преобразовать данные» и выберите «Редактировать параметры»:

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

  1. Теперь введите значения для ваших параметров.

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

Нажмите OK, и все! Ваш SQL-запрос сейчас обновляется на основе параметров, которые вы передали из уровня визуализации PBI, и все обновленные данные будут загружены в вашу модель данных в PBI — это означает, что ваши визуализации будут автоматически обновлены новыми данными. Это больше не статистика — теперь она динамическая 🙂

Еще одна хорошая особенность заключается в том, что ваша базовая таблица, которую вы импортировали в PQ из SQL, не изменится на function (как это обычно бывает при параметризации запросов) — она по-прежнему остается таблицей, даже если вы используете параметры в своем базовом запросе. Это уменьшает проблемы с загрузкой данных в модель данных PBI, все столбцы остаются на своих местах, и ни один из них не удаляется. У меня это работает идеально.

Я также отключил утверждение встроенного запроса (перейдите в Параметры> Безопасность), поскольку PBI не запрашивает у вас разрешения на выполнение вашего запроса. Это полезно делать, когда вы используете собственный запрос (помните о проблемах безопасности, здесь это важно).

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

Ответ №2:

Нет, с 18.08.2020 создать динамическое расписание обновления невозможно. У вас есть элементы управления в вашем отчете (на рабочем столе) и у вас есть элементы управления онлайн. Вот и все.

Комментарии:

1. Это действительно плохо. Если пользователь не имеет контроля над raport, весь raport кажется бесполезным. Надеюсь, команда PBI исправит это в будущем…

2. Я согласен. Но это и есть ответ.

3. Я обнаружил, что могу динамически передавать параметры в SQL с помощью собственного запроса. Я устанавливаю значения для параметров на уровне визуализации, и данные обновляются автоматически.

4. @Muska Потрясающе! Я рад, что вы нашли то, что искали! Теперь я перечитал вопрос и то, что я написал, я вижу, что мы говорили о двух разных вещах. Я имел в виду элементы управления запланированным обновлением

Ответ №3:

На самом деле этот метод работает только на power bi desktop, когда вы публикуете отчет в службе pbi или на сервере power bi, нет никакой опции управления параметрами.

Это давно ожидаемая тема для команды разработчиков ms / pbi.

Лучшие