Power BI - выберите дату среза между 2 столбцами - PullRequest
0 голосов
/ 03 августа 2020

Надеюсь, быстрое объяснение того, что я надеюсь достичь sh с последующим подходом, над которым мы работали больше года.

Желаемый результат У меня есть таблица значений SCD с двумя столбцами, SCD_Valid_From и SCD_Valid_To. Есть ли способ присоединиться к таблице дат в моей модели (или просто использовать срез без соединения), чтобы иметь возможность выбрать конкретную дату c, которая находится между двумя столбцами SCD, и вернуть эту строку данных ?

Исходная таблица

ID   |  SCD_Valid_From  |  SCR_Valid_To  |  Cost
1       2020-08-01         2020-08-03       5.00

Выбрана дата среза 2020-08-02. Я бы хотел, чтобы эта запись с ID = 1 была возвращена.

Что мы пытались сделать на данный момент К нам пришел консультант и помог нам запустить Power BI в прошлом году. Его решение состояло в том, чтобы создать таблицу расширения, которая будет содержать строку для каждой комбинации идентификатора / даты.

Расширенная исходная таблица

ID   |  SCD_Valid_Date  |  Cost
1       2020-08-01         5.00
1       2020-08-02         5.00
1       2020-08-03         5.00

Это происходило изначально на стороне Power BI, и мы будет использовать инкрементный refre sh, чтобы контролировать, какая часть этой таблицы отправляется каждый день. Короче говоря, это было крайне неэффективно и сделало refre sh слишком медленным, чтобы быть эффективным - для данных за 5 лет нам потребуется более 2000 строк на идентификатор, чтобы иметь возможность выбрать размерную запись.

Есть ли способ использовать срез, в котором Power BI может выбирать записи, в которых выбранная дата находится между датами в двух столбцах таблицы?

1 Ответ

2 голосов
/ 04 августа 2020

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

  1. Таблица «Даты» со столбцом «Дата», из которого вы генерируете срез даты.
  2. «your_main_table» со столбцом «scd_valid_from» "и" scd_valid_to ".

Шаг 1: Если у вас нет связи между таблицей« Даты »и« your_main_table », это нормально, иначе вам придется создать новую таблицу, например, Даты2 ". Для этой работы у вас не может быть связи между этими таблицами.

Если вы уже установили связь между этими таблицами, создайте новую настраиваемую таблицу с этим ниже code-

Dates2 = 
SELECTCOLUMNS(
    Dates,
    "Date", Dates[Date]
)

Отсюда я буду рассматривать "Dates2" как источник вашего слайсера даты. Но если у вас есть таблица «Дата», не имеющая отношения к таблице «your_main_table», просто рассмотрите «Даты» вместо «Даты2» при создании мер ниже. Теперь создайте следующие 4 меры в своей таблице «your_main_table»

1.

date_from_current_row = max(join_using_date_range[SCD_Valid_From])

2.

date_to_current_row = max(join_using_date_range[SCD_Valid_to])

3.

date_selected_in_slicer = SELECTEDVALUE(Dates2[Date])

4.

show_hide_row = 
if(
    [date_selected_in_slicer] >= [date_from_current_row] 
        && [date_selected_in_slicer] <= [date_to_current_row] 
    , 
    1, 
    0
)

Теперь у вас есть все инструменты, готовые для игры. Создайте визуальный элемент, используя столбцы из таблицы «your_main_table»

Заключительный шаг: Теперь просто добавьте фильтр визуального уровня с мерой «show_hide_row», и установленное значение будет отображаться только тогда, когда «show_hide_row = 1 ".

Окончательный результат будет примерно таким:

введите описание изображения здесь

...