Как получить последнюю дату с продажами Сумма для всех дат между минимальной и максимальной датой с продажами Сумма. В таблице некоторые даты могут иметь нулевую сумму. Вот пример с ожидаемыми результатами:
Вот что я пробовал. Это все меры DAX.
LastDate =
CALCULATE(
LASTDATE( Sales[Date] ),
REMOVEFILTERS( Sales[Date] )
)
LastNonBlank =
CALCULATE(
LASTNONBLANK( Sales[Date], [Sales] ),
REMOVEFILTERS( Sales )
)
MaxDate =
CALCULATE(
MAX( Sales[Date] ),
REMOVEFILTERS( Sales[Date] )
)
MaxDate_Filter =
CALCULATE(
MAX( Sales[Date] ),
FILTER( ALL( Sales ), Sales[Amount] > 0 )
)
И вот что я получаю с ним:
Так не из этих мер дает ожидаемые результаты.
Таблица для воссоздания проблемы:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtA1MAQiJR0lEIYLmCjF6iDJGwHl8EgbA+VM8cibAOWM8cibQoxXio0FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t, Amount = _t, #"Expected Result" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Amount", Int64.Type}, {"Expected Result", type date}})
in
#"Changed Type"
Обновление
Здесь я нашел интересную ссылку, которая решила мою проблему :
https://www.sqlbi.com/articles/hiding-future-dates-for-calculations-in-dax/
Добавляем вычисляемый столбец в таблицу продаж:
DatesWithSales =
var CalendarDate = Sales[Date]
return
CalendarDate <= CALCULATE( MAX( Sales[Date] ), FILTER( ALLSELECTED( Sales ), Sales[Amount] > 0 ) ) &&
CalendarDate >= CALCULATE( MIN( Sales[Date] ), FILTER( ALLSELECTED( Sales ), Sales[Amount] > 0 ) )
Затем используем меру:
Expected Result =
CALCULATE(
MAX( Sales[Date] ),
CALCULATETABLE(
VALUES( Sales[Date] ), -- here can be whatever time intelligence function like SAMEPERIODLASTYEAR( Sales[Date] )
Sales[DatesWithSales] = TRUE()
)
)