PowerBI: Обнаружены лишние таблицы LocalDateTable

Это первая статья из раздела СОЛК (Советы, Оплаченные Литрами Кофе), посвященная оптимизации количества таблиц в PowerBI.


При создании новых столбцов, или мер внутри PowerBI вы могли заметить выпадающий список при обращении к столбцу, содержащему дату / дату и время.

Что-то вроде такого

«Это полезная бифидобактерия» — скажете вы, она позволяет не запоминать функции дат, которые возвращают все эти номера месяцев, кварталов, и так далее.

С одной стороны — вы правы, это некий помощник на пути изучения DAX, который упрощает написание кода. С другой стороны — за все нужно платить.

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

Если у вас небольшая модель, состоящая из нескольких таблиц, у которых всего 1-2 столбца с датами — в этом ничего страшного нет, на производительность это скорее всего не повлияет. А вот если таблиц 10-20 и у них по 4-5 столбцов, то изменение в производительности будет ощутимое.

Увидеть все эти виртуальные таблицы с просчитанными иерархиями дат, которые услужливо создал для вас PowerBI можно через интерфейс DAX Studio — они отобразятся на левой панели, в списке таблиц. Они идут с префиксом LocalDateTable

Если вы видите в списке 20+ таблиц, то скорее всего это будет влиять на скорость обновления модели данных.

Чтобы виртуальные таблицы исчезли, а также не появлялись вновь в новых файлах — нужно убрать галочку в настройках в разделе Data Load (секция Current File — настройка текущего файла, Global — для новых файлов)

… Но есть маленький нюанс. После отключения опции все меры / вычисляемые столбцы, которые задействовали эти виртуальные таблицы будут показывать ошибку и их нужно будет скорректировать.

Ниже — чем можно заменить ( [Column] это столбец с датой )
[Column].Date
=INT( [Date] ) — Просто округляем дату до целого и присваиваем ей тип данных Date

[Column].Day
=DAY( [Column] )

[Column].Month
=FORMAT( [Date], «MMMM» )

[Column].MonthNo
=MONTH( [Column] )

[Column].Quarter
= «Qtr » & INT( ( MONTH( [Column] ) + 2) / 3 )

[Column].QuarterNo
=INT( ( MONTH( [Column] ) + 2) / 3 ) — Пользуясь случаем передаю привет @Кулешовой Ольге

[Column].Year
=YEAR( [Column] )

Шустрого DAX всем !

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.