#powerbi #powerquery
Вопрос:
Я хотел бы применить некоторые условия при очистке данных в Power BI Power Query.
Нужна только одна запись даты для каждого идентификатора CONSOL
ETD (ДД/ММ/ГГГГ)
Состояние, как показано ниже:
i.) Дата с «нулем» не должна быть выбрана в качестве самой ранней даты, когда для этого идентификатора CONSOL есть доступная дата.
Например: C001 с датой «1/1/2021» следует выбрать в качестве самой ранней даты, но у C002 нет другой доступной даты. В этом случае можно выбрать значение «Null».
ii.) Если у идентификатора CONSOL есть несколько видов транспорта (МОРСКОЙ или ВОЗДУШНЫЙ ,RAI,ROA), приоритеты ТОЛЬКО на самую раннюю дату «МОРСКОГО» или «ВОЗДУШНОГО» вида транспорта.
Например: В C003 даже самая ранняя дата-1/1/2021, но мы фокусируемся только на дате с видом транспорта «МОРСКОЙ» или «ВОЗДУШНЫЙ». Таким образом, самая ранняя дата для C003-1/3/2021, в то время как C004-1/6/2021.
iii.) Если существует только один вид транспорта (не имеет значения, RAI или ROA), будет выбрана самая ранняя дата.
Например: «1/1/2021» для C005 и C006.
Здесь прилагается вместе с pbix: https://ufile.io/twdwgzh8
Спасибо за ваше внимание.
Любая помощь, которую вы можете оказать, будет очень признательна!
Ответ №1:
Вы можете попробовать это ниже.
earliest =
var current_row_consolid = min(your_table_name[ConsolID])
var current_row_transport = min(your_table_name[Transport])
var earliest_sea_air =
CALCULATE(
min(your_table_name[ETD]),
FILTER(
ALLEXCEPT(your_table_name,your_table_name[ConsolID]),
your_table_name[Transport] = "SEA" || your_table_name[Transport] = "AIR"
)
)
var earliest_others =
CALCULATE(
min(your_table_name[ETD]),
FILTER(
ALLEXCEPT(your_table_name,your_table_name[ConsolID]),
your_table_name[Transport] <> "SEA" amp;amp; your_table_name[Transport] <> "AIR"
)
)
return
if(
ISBLANK(earliest_sea_air),
earliest_others,
earliest_sea_air
)
Вот окончательный результат-