Совет по производительности проектирования для Power BI: будьте осторожны с датами

Tags: Power BI, таблица

Мы писали о Date Dimension в Power BI во многих публикациях, и теперь имеет смысл объяснить одну из самых распространенных проблем с производительностью, наблюдаемую в некоторых моделях. Иногда размер вашей модели значительно увеличивается, и вы не знаете, почему? В этой статье мы покажем вам одну из проблем с производительностью, которая может возникнуть из-за определенных значений даты, и способы ее устранения.

Образец набора данных

У нас есть образец набора данных, с одной таблицей и тремя строками:

 

Как видите, это не большая таблица. Однако, когда мы сохраняем файл * .pbix, размер файла кажется немного сумасшедшим!

 

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

Почему? Исследование с помощью Power BI Helper

Если у вас большой файл * .pbix, вы можете исследовать столбцы и таблицы, которые вызывают наибольшее потребление памяти, с помощью Power BI Helper. Вы можете скачать Power BI Helper бесплатно здесь. Мы открыли его выше в Power BI Helper, и на вкладке СModeling Advise мы видем следующее:

 

Как видно из вышеприведенного вывода, поле Date в таблице Date является самым большим столбцом в этом наборе данных. занимает 150 МБ оперативной памяти! Это с учетом того, что у нас есть только три различных значения в столбце! Кажется немного странным, не так ли? Давайте углубимся в причину.

Почему? Размер даты по умолчанию

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

Power BI создает измерение даты по умолчанию для каждого поля даты в вашем наборе данных. Значения в этой таблице дат будут от минимального значения даты в этом поле (столбце) до максимального значения даты с одной строкой для каждого дня. Существует возможность отключить измерение даты по умолчанию, если вы хотите, и создать собственное измерение даты. Однако наличие измерения даты по умолчанию сделает многие вычисления дат проще, и поэтому многие люди используют его таким образом. Это было очень краткое содержание вышеупомянутой статьи.

Несколько частей предыдущего параграфа вам нужно прочитать более внимательно:

Power BI создает измерение даты по умолчанию для каждого поля даты в вашем наборе данных.

Теперь это означает, что поле Date в нашей образцовой таблице - это не просто поле, а таблица. Которую мы называем таблица измерения даты по умолчанию.

Значения в этой таблице дат будут представлены от минимального значения даты в этом поле (столбце) до максимального значения даты с одной строкой для каждого дня.

Минимальное значение в этом столбце - 1 января 1990 года, а максимальное - 31 декабря 9999 года! Вау, максимальное значение меняет все, не так ли? Это означает, что в измерении даты у нас будут все дни (один день на строку) с 1 января 1990 года по 31 декабря 9999 года. Это примерно 8 009 лет, что составляет почти 3 миллиона строк в таблице дат по умолчанию. Столбец даты в этой таблице будет иметь 3 миллиона различных значений, и поэтому у нас такой большой объем оперативной памяти для этого столбца:

 

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

Решение: не применимое значение даты

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

Если вы используете измерение даты по умолчанию, мы рекомендуем не использовать этот подход и заменять любое значение, подобное этому, на null. Вы можете сделать это в Power Query с простой опцией Replace Value. Вот как это сделать:

Откройте Edit Queries, чтобы перейти в окно Power Query Editor:

 

Затем щелкните правой кнопкой мыши столбец и выполните команду Replace Values.

 

Замените 31 декабря 9999 на ноль;

 

Затем нажмите Close и Apply в окне редактора Power Query. Наша таблица данных теперь выглядит следующим образом (нулевые значения будут показаны как пустые в Power BI)

 

А теперь, если мы снова сохраним файл * .pbix, это будет новый размер:

 

Размер файла сократился с 26 МБ до 66 КБ! Это почти в 400 раз меньше! Все это с таким простым изменением. И теперь все столбцы малы в потреблении хранилища памяти:

 

Резюме

Таблица дат по умолчанию не знает, что самое дальнее значение даты, которое у вас есть в 9999, является просто «неприменимым» значением. Таблица дат по умолчанию будет рассматривать это как ваше самое большое значение даты и строить целую таблицу на основе этого, что может вызвать проблемы с производительностью, подобные тому, что вы видели в этом примере. Измените ваши «неприменимые» значения даты на null, чтобы очень просто исправить это.






No Comments

Add a Comment