Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается настройка добавочного обновления и данных в режиме реального времени для семантических моделей. Дополнительные сведения о настройке добавочного обновления для потоков данных см. в разделе "Премиум" функций потоков данных — добавочное обновление.
Настройка добавочного обновления включает создание параметров RangeStart и RangeEnd, применение фильтров и определение политики добавочного обновления. После публикации в службе Power BI вы выполните начальное обновление модели. Начальная операция обновления и последующие операции обновления применяют определенную политику добавочного обновления. Прежде чем выполнить эти действия, убедитесь, что вы полностью понимаете функциональные возможности, описанные в добавочном обновлении и данных в режиме реального времени для семантических моделей.
Создание параметров
Добавочное обновление требует параметров RangeStart и RangeEnd для определения периода времени для каждой операции обновления. Не удается настроить добавочное обновление без этих параметров. Power BI использует их для создания секций на основе дат для данных, поэтому исходная таблица должна иметь столбец даты или времени для фильтрации.
В этой задаче вы будете использовать Редактор Power Query для создания параметров RangeStart и RangeEnd со значениями по умолчанию. Значения по умолчанию применяются только при фильтрации данных для загрузки в модель в Power BI Desktop. Значения, которые вы вводите, должны содержать только небольшое количество последних данных из источника данных. При публикации в службу политика добавочного обновления заменяет заданные значения временного диапазона. То есть политика создает окна входящих данных друг за другом.
В Power BI Desktop выберите "Преобразовать данные" на ленте "Главная", чтобы открыть Редактор Power Query.
Выберите раскрывающийся список "Управление параметрами", а затем выберите новый параметр.
В поле "Имя" введите RangeStart (с учетом регистра). В поле "Тип" выберите дату и время в раскрывающемся списке. В поле "Текущее значение" введите значение даты и времени начала.
Выберите "Создать" , чтобы создать второй параметр с именем RangeEnd. В поле "Тип" выберите дату и время, а затем в поле "Текущее значение" введите значение даты и времени окончания. Нажмите ОК.
Теперь, когда вы определили параметры RangeStart и RangeEnd, отфильтруйте данные для загрузки в модель на основе этих параметров.
Фильтрация данных
Примечание.
Прежде чем продолжить работу с этой задачей, убедитесь, что в исходной таблице есть столбец типа данных Дата/Время. Если у него нет столбца даты и времени, но он содержит столбец даты целочисленных суррогатных ключей в формеyyyymmdd, выполните действия, описанные в статье Convert DateTime в целочисленное число далее в этой статье, чтобы создать функцию, которая преобразует значение даты и времени в параметрах для сопоставления целочисленного суррогатного ключа исходной таблицы.
Теперь вы будете применять фильтр на основе условий в параметрах RangeStart и RangeEnd.
В редакторе Power Query выберите столбец с датой, по которому нужно отфильтровать, а затем выберите в раскрывающемся списке >Дата фильтры>, Пользовательский фильтр.
В Фильтровать строки, чтобы указать первое условие, выберите позже или позже или равно, затем выберите Параметр, и RangeStart.
Чтобы указать второе условие, если выбрано является после в первом условии, выберите до или равно, или если выбрано после или равно в первом условии, выберите раньше для второго условия, затем выберите Параметр, а затем выберите RangeEnd.
Важно. Убедитесь, что запросы имеют значение (=) в RangeStart или RangeEnd, но не оба. Если значение равно (=) существует в обоих параметрах, строка может удовлетворить условия для двух секций, что может привести к дублированию данных в модели. Например,
= Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd)может привести к дублированию данных, если есть OrderDate, равный RangeStart и RangeEnd.Нажмите кнопку "ОК ", чтобы закрыть.
На ленте "Главная" в Редакторе Power Query нажмите "Закрыть и Применить". Power Query загружает данные на основе фильтров, определенных параметрами RangeStart и RangeEnd, и любых других фильтров, которые вы определили.
Power Query загружает только данные, указанные между параметрами RangeStart и RangeEnd. В зависимости от объема данных в этом периоде таблица должна быстро загружаться. Если он кажется медленным и процессоемким, скорее всего, запрос не сворачивается.
Определение политики
После определения параметров RangeStart и RangeEnd и фильтрации данных на основе этих параметров вы определите политику добавочного обновления. Эта политика применяется только после публикации модели в службе, а также выполнения ручной или запланированной операции обновления.
В режиме таблицы щелкните правой кнопкой мыши таблицу в области данных и выберите добавочное обновление.
В Инкрементальном обновлении и режиме реального времени данных>выберите таблицу и проверьте или выберите таблицу повторно. Значение по умолчанию в списке Select table — это таблица, которую вы выбрали в представлении таблицы.
Укажите необходимые параметры:
В разделе "Задать диапазоны импорта и обновления">добавочно обновите эту таблицу, переместите ползунок в "Вкл.". Если ползунок отключен, это означает, что выражение Power Query для таблицы не включает фильтр на основе параметров RangeStart и RangeEnd.
В Архивировать начальные данные укажите период хранения, который вы хотите включить в модель. Все строки с датами в этом периоде будут загружены в модель в службе, если другие фильтры не применяются.
При инкрементальном обновлении данных укажите период обновления. Все строки с датами этого периода будут обновляться в модели при каждом выполнении вручной или запланированной операции обновления, выполненной службой Power BI.
Укажите необязательные параметры:
В разделе "Выбор необязательных параметров" выберите " Получить последние данные в режиме реального времени" с помощью DirectQuery (только premium), чтобы включить последние изменения данных, произошедшие в источнике данных после последнего периода обновления. Этот параметр вызывает создание секции DirectQuery в таблице, в соответствии с политикой поэтапного обновления.
Выберите Обновлять только полные дни, чтобы обновить только целые дни. Если операция обновления обнаруживает, что день не завершен, строки для этого дня не обновляются. Этот параметр автоматически включается при выборе кнопки "Получить последние данные в режиме реального времени" с помощью DirectQuery (только "Премиум").
Выберите " Определить изменения данных", чтобы указать столбец даты и времени, используемый для идентификации и обновления только дней, в которых изменены данные. Столбец даты и времени должен существовать, как правило, в целях аудита в источнике данных. Этот столбец не должен быть одинаковым столбцом, используемым для секционирования данных с параметрами RangeStart и RangeEnd. Максимальное значение этого столбца вычисляется для каждого из периодов в добавочном диапазоне. Если он не изменился с момента последнего обновления, текущий период не обновляется. Для моделей, опубликованных в емкостях Premium, можно также указать пользовательский запрос. Дополнительные сведения см. в статье "Дополнительное добавочное обновление" — пользовательские запросы для обнаружения изменений данных.
Примечание.
Удаленные строки не выявляются при обнаружении изменений. Обнаружено только мягкое удаление, что означает, что строка по-прежнему доступна в источнике данных и помечена как удаленная с датой обновления в столбце, используемом для отслеживания изменений. Power BI приводит только к строкам, которые не помечены как удаленные.
В зависимости от параметров политика должна выглядеть примерно так:
Просмотрите параметры и нажмите кнопку "Применить ", чтобы завершить политику обновления. Этот шаг не загружает данные.
Сохранение и публикация в сервисе
Теперь, когда параметры RangeStart и RangeEnd, фильтрация и обновление параметров политики завершены, сохраните модель и опубликуйте ее в службе. Если модель становится большой, обязательно включите формат хранилища больших моделей, прежде чем вызвать первое обновление в службе.
Обновление модели
В службе обновите модель. Первое обновление загружает новые и обновленные данные в период обновления, а также исторические данные за весь период хранения. В зависимости от объема данных это обновление может занять довольно много времени. Последующие обновления( вручную или запланированные) обычно гораздо быстрее, так как применяется политика добавочного обновления и обновляется только данные за период, указанный в параметре политики обновления.
Преобразование DateTime в целое число
Эта задача требуется только в том случае, если в таблице используются целые суррогатные ключи вместо значений даты и времени в столбце дат, используемом для определения фильтра RangeStart и RangeEnd.
Тип данных параметров RangeStart и RangeEnd должен иметь тип данных даты и времени независимо от типа данных столбца даты. Однако для многих источников данных таблицы не имеют столбца типа данных даты и времени, но вместо этого имеют столбец даты целочисленных суррогатных ключей в виде yyyymmdd. Как правило, эти суррогатные ключи не могут преобразоваться в тип данных Date/Time, так как результатом будет выражение запроса без свертывания, но можно создать функцию, которая преобразует значение даты и времени в параметрах для сопоставления целочисленного суррогатного ключа таблицы источника данных без потери свертывания. Затем функцию вызывают на этапе фильтрации. Этот шаг преобразования требуется, если таблица источника данных содержит только суррогатный ключ в качестве целочисленного типа данных.
На ленте "Главная" в Редакторе Power Query выберите раскрывающееся меню "Новый источник" и затем выберите "Пустой запрос".
В параметрах запроса введите имя, например DateKey, а затем в редакторе формул введите следующую формулу:
= (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)
Чтобы проверить формулу, в Введите параметр, введите значение даты и времени, а затем выберите Вызвать. Если формула правильна, возвращается целочисленное значение даты. После проверки удалите этот новый запрос вызываемой функции .
В запросах выберите таблицу и измените формулу запроса, чтобы вызвать функцию с параметрами RangeStart и RangeEnd.
= Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))