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





вы можете создать вычисляемый столбец, как показано ниже:
output =
var this_row_category = your_table_name[category]
var this_row_date = your_table_name[date]
var previous_date_this_category =
calculate(
max(your_table_name[date]),
filter(
all(your_table_name),
your_table_name[category] = this_row_category
&& your_table_name[date] < this_row_date
)
)
return
if (
NOT ISBLANK(previous_date_this_category),
DATEDIFF(previous_date_this_category,this_row_date,DAY)
)
Вот результат-
Вы могли бы попробовать
let Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Category"}, {{"data", each
let a=Table.AddIndexColumn(Table.Sort(_,{{"Date", Order.Ascending}}), "Index", 0, 1, Int64.Type)
in Table.AddColumn(a,"Output", each try Duration.Days([Date] - a[Date]{[Index]-1}) otherwise null)
, type table }}),
#"Expanded data" = Table.ExpandTableColumn(#"Grouped Rows", "data", {"Date", "Output"}, {"Date", "Output"})
in #"Expanded data"
Я создал 3 меры DAX (MAXDate и PrevDate могут быть переменными в окончательной мере):
// Тот, который вычисляет максимальную дату для каждой категории:
MAXDate =
CALCULATE (
MAX ( 'Table'[Date] ),
ALLEXCEPT ( 'Table', 'Table'[Category] )
)
// Тот, который вычисляет предыдущую дату:
PrevDate =
VAR MaxDate =
MAX ( 'Table'[Date] )
VAR MaxPrevDate =
CALCULATE (
MAX ( 'Table'[Date] ),
FILTER (
ALL ( 'Table' ),
'Table'[Date] < MaxDate
&& 'Table'[Category] = MAX ( 'Table'[Category] )
)
)
RETURN
MaxPrevDate
// Тот, который вычисляет разницу в днях между двумя мерами выше:
DateDiff =
IF ( [PrevDate] <> BLANK (), DATEDIFF ( [PrevDate], [MAXDate], DAY ) )
Результат:
Ценю вашу помощь.