Share via


Настройка добавочного обновления и данных в режиме реального времени

В этой статье описывается настройка добавочного обновления и данных в режиме реального времени для семантических моделей. Дополнительные сведения о настройке добавочного обновления для потоков данных см. в разделе "Премиум" функций потоков данных — добавочное обновление.

Настройка добавочного обновления включает создание параметров RangeStart и RangeEnd, применение фильтров и определение политики добавочного обновления. После публикации в служба Power BI вы выполните начальную операцию обновления в модели. Начальная операция обновления и последующие операции обновления применяют определенную политику добавочного обновления. Прежде чем выполнить эти действия, убедитесь, что вы полностью понимаете функциональные возможности, описанные в добавочном обновлении и данных в режиме реального времени для семантических моделей.

Создание параметров

В этой задаче вы будете использовать Редактор Power Query для создания параметров RangeStart и RangeEnd со значениями по умолчанию. Значения по умолчанию применяются только при фильтрации данных для загрузки в модель в Power BI Desktop. Значения, которые вы вводите, должны содержать только небольшое количество последних данных из источника данных. При публикации в службе эти значения диапазона времени переопределяются политикой добавочного обновления. То есть политика создает окна входящих данных друг за другом.

  1. В Power BI Desktop выберите "Преобразовать данные" на ленте "Главная", чтобы открыть Редактор Power Query.

  2. Выберите раскрывающийся список "Управление параметрами", а затем выберите новый параметр.

  3. В поле "Имя" введите RangeStart (учитывает регистр). В поле "Тип" выберите дату и время в раскрывающемся списке. В поле "Текущее значение" введите значение даты и времени начала.

    Define the Range Start parameter in the Manage Parameters dialog.

  4. Выберите "Создать" , чтобы создать второй параметр с именем RangeEnd. В поле "Тип" выберите дату и время, а затем в поле "Текущее значение" введите значение даты и времени окончания. Нажмите ОК.

    Define the Range End parameter in the Manage Parameters dialog.

Теперь, когда вы определили параметры RangeStart и RangeEnd, отфильтруйте данные для загрузки в модель на основе этих параметров.

Фильтрация данных

Примечание.

Прежде чем продолжить работу с этой задачей, убедитесь, что в исходной таблице есть столбец данных даты и времени типа данных даты и времени. Если у него нет столбца даты и времени, но он содержит столбец даты целочисленных суррогатных ключей в формеyyyymmdd, выполните действия, описанные в статье Convert DateTime в целочисленное число далее в этой статье, чтобы создать функцию, которая преобразует значение даты и времени в параметрах для сопоставления целочисленного суррогатного ключа исходной таблицы.

Теперь вы будете применять фильтр на основе условий в параметрах RangeStart и RangeEnd.

  1. В Редактор Power Query выберите столбец даты, на который нужно отфильтровать, а затем выберите пользовательский фильтр даты в >раскрывающемся списке>.

  2. В строках фильтра, чтобы указать первое условие, выберите его после или после или равно, а затем выберите параметр, а затем выберите RangeStart.

    Чтобы указать второе условие, если выбрано в первом условии, выберите значение до или равно, или если выбрано значение после или равно в первом условии, выберите его перед вторым условием, а затем выберите параметр, а затем выберите RangeEnd.

    Filter rows dialog showing Range Start and Range End conditions.

    Важно. Убедитесь, что запросы имеют значение (=) в RangeStart или RangeEnd, но не оба. Если значение равно (=) существует в обоих параметрах, строка может удовлетворить условия для двух секций, что может привести к дублированию данных в модели. Например, может привести к дублированию данных, = Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) если есть OrderDate, равный rangeStart и RangeEnd.

    Нажмите кнопку "ОК ", чтобы закрыть.

  3. На ленте "Главная" в Редактор Power Query нажмите кнопку "Закрыть" и "Применить". Power Query загружает данные на основе фильтров, определенных параметрами RangeStart и RangeEnd, и любых других фильтров, которые вы определили.

    Power Query загружает только данные, указанные между параметрами RangeStart и RangeEnd. В зависимости от объема данных в этом периоде таблица должна быстро загружаться. Если он кажется медленным и процессоемким, скорее всего, запрос не свертывания.

Определение политики

После определения параметров RangeStart и RangeEnd и фильтрации данных на основе этих параметров вы определите политику добавочного обновления. Эта политика применяется только после публикации модели в службе, а также выполнения ручной или запланированной операции обновления.

  1. В представлении данных щелкните правой кнопкой мыши таблицу в области данных и выберите добавочное обновление.

    Data view showing Table context menu with Incremental refresh selected.

  2. В добавочном обновлении и режиме реального времени данные>Select table, проверьте или выберите таблицу. Значение по умолчанию в списке "Выбор таблицы " — это таблица, выбранная в представлении данных.

  3. Укажите необходимые параметры:

    В разделе "Задать диапазоны импорта и обновления">добавочно обновите эту таблицу, переместите ползунок в "Вкл.". Если ползунок отключен, это означает, что выражение Power Query для таблицы не включает фильтр на основе параметров RangeStart и RangeEnd.

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

    При добавочном обновлении данных укажите период обновления. Все строки с датами этого периода будут обновляться в модели при каждом выполнении вручную или запланированной операции обновления служба Power BI.

  4. Укажите необязательные параметры:

    В разделе "Выбор необязательных параметров" выберите " Получить последние данные в режиме реального времени" с помощью DirectQuery (только premium), чтобы включить последние изменения данных, произошедшие в источнике данных после последнего периода обновления. Этот параметр приводит к добавлению секции DirectQuery в таблицу с добавочной политикой обновления.

    Выберите только полные дни обновления, чтобы обновить только целые дни. Если операция обновления обнаруживает, что день не завершен, строки для этого дня не обновляются. Этот параметр автоматически включается при выборе кнопки "Получить последние данные в режиме реального времени" с помощью DirectQuery (только "Премиум").

    Выберите " Определить изменения данных", чтобы указать столбец даты и времени, используемый для идентификации и обновления только дней, в которых изменены данные. Столбец даты и времени должен существовать, как правило, в целях аудита в источнике данных. Этот столбец не должен быть одинаковым столбцом, используемым для секционирования данных с параметрами RangeStart и RangeEnd. Максимальное значение этого столбца вычисляется для каждого из периодов в добавочном диапазоне. Если он не изменился с момента последнего обновления, текущий период не обновляется. Для моделей, опубликованных в емкостях Premium, можно также указать пользовательский запрос. Дополнительные сведения см. в статье "Дополнительное добавочное обновление" — пользовательские запросы для обнаружения изменений данных.

    В зависимости от параметров политика должна выглядеть примерно так:

    Incremental refresh and real-time data policy dialog showing incremental refresh range.

  5. Просмотрите параметры и нажмите кнопку "Применить ", чтобы завершить политику обновления. Этот шаг не загружает данные.

Сохранение и публикация в службе

Теперь, когда параметры RangeStart и RangeEnd, фильтрация и обновление параметров политики завершены, сохраните модель и опубликуйте ее в службе. Если модель станет большой, обязательно включите форматхранилища больших моделей перед вызовом первого обновления в службе.

Обновление модели

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

Преобразование DateTime в целое число

Эта задача требуется только в том случае, если в таблице используются целые суррогатные ключи вместо значений даты и времени в столбце дат, используемом для определения фильтра RangeStart и RangeEnd.

Тип данных параметров RangeStart и RangeEnd должен иметь тип данных даты и времени независимо от типа данных столбца даты. Однако для многих источников данных таблицы не имеют столбца типа данных даты и времени, но вместо этого имеют столбец даты целочисленных суррогатных ключей в виде yyyymmdd. Как правило, эти суррогатные ключи не могут преобразоваться в тип данных Date/Time, так как результатом будет выражение запроса без свертывания, но можно создать функцию, которая преобразует значение даты и времени в параметрах для сопоставления целочисленного суррогатного ключа таблицы источника данных без потери свертывания. Затем функция вызывается на шаге фильтра. Этот шаг преобразования требуется, если таблица источника данных содержит только суррогатный ключ в качестве целочисленного типа данных.

  1. На ленте "Главная" в Редактор Power Query выберите раскрывающийся список "Создать источник" и нажмите кнопку "Пустой запрос".

  2. В Параметры запроса введите имя, например DateKey, а затем в редакторе формул введите следующую формулу:

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Power BI function editor showing the integer surrogate DateKey function.

  3. Чтобы проверить формулу, введите значение даты и времени введите значение даты и времени, а затем нажмите кнопку "Вызвать". Если формула правильна, возвращается целочисленное значение даты. После проверки удалите этот новый запрос вызываемой функции .

  4. В запросах выберите таблицу и измените формулу запроса, чтобы вызвать функцию с параметрами RangeStart и RangeEnd.

    = Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Power BI table showing DateKey filter.