Несмотря на то, что вы не используете фактические даты, у вас есть значения в порядке возрастания, поэтому вы должны иметь возможность использовать шаблоны, аналогичные стандартным показателям с начала года в DAX и Power BI. Надо отдать должное команде SQLBI, стоящей за веб-сайтом DAX Patterns Я просто настраиваю их работу здесь.
Чтобы не усложнять ситуацию, я бы предложил разбить вещи на этапы, год сборкидата измеряет как общее время выполнения, так и количество измерений, а затем треть, чтобы получить фактическое среднее значение, которое вам нужно. Отдельные меры также помогают при отладке, если есть проблема.
Я предполагаю, что ваша таблица данных называется «MyTable».
[TotalLeadTimeYTD] :=
CALCULATE (
SUM('MyTable'[Leadtime]),
FILTER (
ALL ( 'MyTable' ),
'MyTable'[FY] = MAX ( 'MyTable'[FY] )
&& 'MyTable'[Period] <= MAX ( 'MyTable'[Period] )
)
)
И:
[CountOfMeasuresYTD] :=
CALCULATE (
COUNTROWS('MyTable'),
FILTER (
ALL ( 'MyTable' ),
'MyTable'[FY] = MAX ( 'MyTable'[FY] )
&& 'MyTable'[Period] <= MAX ( 'MyTable'[Period] )
)
)
И наконец
AverageLeadTimeYTS := DIVIDE([TotalLeadTimeYTD],[CountOfMeasuresYTD])
Имейте в виду, что, поскольку у вас нет отдельной таблицы дат, ВСЕ ('MyTable') вычислений также удалят любые другие фильтры, которые вы применили. Если это не тот результат, который вам нужен, вам нужно будет изменить его, чтобы удалить фильтры по периоду и году, но не другие. ALL («MyTable» [FY], «MyTable» [Period]) может работать, но мы находимся в точке, где трудно кодировать без выборочных данных.
Вышеуказанные меры были проверены на соответствие следующим жесткимнабор кодированных данных:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcos0tFDSUQowBBKGSrE6CBEjIGGEImIMJIxhIuYYusyRdMUCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", Int64.Type}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "FY"}, {"Column2", "Period"}, {"Column3", "Leadtime"}})
in
#"Renamed Columns"