Человек стоит перед развилкой в лесу, выбирая путь между двумя тропинками.

Как фильтровать даты, включая или исключая будущие даты, в семантических моделях

Обычно отображаются либо данные планирования, либо данные за предыдущий год, выходящие за рамки сегодняшней даты. Но данные о будущем могут вызывать путаницу. Как добавить фильтр для отображения или скрытия данных о будущем? Давайте посмотрим, как это сделать.

Делиться

c3d42aa3ff0f3af2df9da553e946ac97

Введение

Представьте, что у нас есть три показателя:

  1. Сумма продаж
  2. Бюджет продаж Сумма Бюджет
  3. Сумма продаж (PY)

Если мы посмотрим на таблицу с этими цифрами, то увидим следующее (при условии, что у нас есть актуальные данные до конца июля 2025 года):

af93de471ef10af3c884f027224e95b2

Хотя результаты верны, моим пользователям могут потребоваться два разных представления:

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

У меня есть несколько способов это сделать:

  1. Создавайте отдельные визуализации с различными фильтрами.
  2. Создайте две страницы для двух представлений, снова используя разные фильтры.
  3. Посоветуйте моим пользователям использовать фильтр календаря для фильтрации данных по мере необходимости.

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

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

Создайте таблицу фильтров по дате.

В моей таблице с датами есть столбцы-индексы для разных периодов: дни, недели, месяцы, кварталы и годы.

  • В строке с текущим периодом содержится 0.
  • В строках за прошлые периоды содержатся отрицательные числа.
  • Строки для фьючерсных периодов содержат положительные числа.

Давайте посмотрим на строки небольшого примера, реализованного в SQL с использованием столбца DayIndex:

6fd00417ec3f4a56a68b2a90ecb43403

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

Я взял все строки с индексом до 0 и пометил их как «Только текущие данные».

Затем я объединил (UNION) все строки из таблицы Date и пометил их как «Включены будущие данные».

6a86eb176f24ba77996d65261d2c8e5a

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

Теперь я импортировал эту таблицу в Power BI.

Разверните модель данных

После добавления этой таблицы в Power BI я создал новую связь между новой таблицей и таблицей дат:

588448115b19d10e2d250412b3b9fb28

Для параметра «Направление перекрестной фильтрации» необходимо установить значение «Оба» , поскольку столбец DateKey в таблице фильтра дат не является уникальным:

7cffd0ba5ebaae7117e99650fd000243

Следовательно, направление фильтрации будет только «Дата» -> «Фильтр по дате», что не сработает.

Мне нужно отфильтровать таблицу дат по таблице фильтров дат. Поэтому я должен установить направление фильтрации на «Оба».

Результат

Далее я добавил в отчет срез:

568a6aa8b4dbb136e49f19b55694af59

После всех подготовительных работ инструмент Slicer позволяет выбрать необходимые данные:

5d21c3b95cbfd815b383c3ccc37bcc45
7615950f3ddad91ffae3a4de29bca20a

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

Выбор полных периодов

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

Это особенно полезно при сравнении текущих данных с бюджетными или предыдущими годами.

Представьте, что на 5-й или 6-й день месяца у вас есть данные о продажах всего за несколько дней, но вы сравниваете их с бюджетом на весь месяц. Это может ввести в заблуждение.

Но что произойдет, если фильтр необходимо установить на целые периоды, например, месяцы или годы?

Здесь представлен модифицированный запрос для установки значения столбца DateFilter на основе целых лет:

619a98dd5d51a40fc2fbcc819d80ea01

Теперь отображается весь год, хотя должны отображаться только текущие данные:

da1f2163248da06127ceba97b563bd25

Аналогичным образом вы можете изменить таблицу фильтров по датам, чтобы фильтровать данные по месяцам или другим периодам.

Это можно сделать очень легко, отфильтровав строки в таблице «Даты» по текущей дате.

Заключение

Этот подход прост в реализации и удобен для пользователей отчетов.

Это позволяет избежать написания кода DAX и полностью опирается на информацию из таблицы Date.

Главная задача — расширить модель данных для поддержки необходимых требований с минимальными усилиями.

Если у вас нет столбцов с индексами, как у меня, вы можете использовать другой подход для создания таблицы фильтра по дате. Например, используйте функцию для получения текущей даты, такую как GETDATE() в T-SQL или Now() в других языках.

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

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

Хорошо, вы можете добавить в отчет относительные фильтры. Во многих случаях этого достаточно.

В других случаях столбцы индекса предоставляют мне больше гибкости.

Ссылки

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

Данные Contoso можно свободно использовать в соответствии с лицензией MIT, как описано в этом документе. Я изменил набор данных, чтобы привести данные к современным датам.

Источник: towardsdatascience.com

✅ Найденные теги: Даты, Как, новости, Семантические Модели, Фильтрация

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых