График средних продаж за день недели по данным, составленным из часов - PullRequest
0 голосов
/ 08 апреля 2019

Я использую рабочий стол PowerBI и создаю график для отображения средних продаж за день недели :

enter image description here

Мои данные в следующем формате:

(выборка в Excel для удаления конфиденциальной информации, добавление цветов для облегчения визуализации)

sample_data

Моя проблема : поскольку каждый день разбит на 24 строки (часы), мое среднее значение неверно с коэффициентом 24.

Например, если я выбираюЯнварь-2019 в слайсере, который имеет пять вторников (код дня недели: 2), я хочу видеть на полосе № 2:

  • (сумма суммы, где день недели = 2) /5

Вместо этого я вычисляю:

  • (сумма суммы, где день недели = 2) / (24 * 5)

Я могу придумать несколько способов сделать это правильно, но они включают пользовательские столбцы или вспомогательные таблицы.Я уверен, что есть более простой ответ, используя DAX и меры, но я все еще изучаю это.

Как я могу правильно рассчитать это?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Давайте предположим, что ваша таблица называется «Данные». Создайте 3 DAX меры (не рассчитанные столбцы):

Мера 1:

Total Amount = SUM(Data[Amount])

Мера 2:

Number of Days = DISTINCTCOUNT(Data[Date])

Мера 3:

Average Amount per Day = DIVIDE( [Total Amount], [Number of Days])

Перетащите последнюю меру на график, она должна дать ожидаемый результат.

1 голос
/ 08 апреля 2019

Как я понял из твоего превосходства ты работаешь с 3 разными колонками. Вы можете лучше объединить это с датой и позволить power-bi справиться с этим.

Ниже m-language сделает это за вас:

let
    Source = Excel.Workbook(File.Contents("C:\....\Test.xlsx"), null, true),
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"date", type datetime}, {"hour", type time}, {"amount", type number}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Date", each  [date]+ Duration.FromText(Time.ToText([hour]))),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"amount", "Date"}),
    #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each ([amount] <> 0))
in
    #"Filtered Rows"

Хитрость в добавленном столбце: # «Добавленный пользовательский» = Table.AddColumn (# «Измененный тип», «Дата», каждый [дата] + Duration.FromText (Time.ToText ([час])))

Здесь я добавляю время к дате.

Я также удалил пустые (нулевая сумма) строки, они вам не нужны.

enter image description here

Я добавил Дата и день недели в Ось, чтобы пользователь теперь мог переходить от года к месяцу, от дня к дню недели. Имейте в виду, что вам нужно сделать СУММУ суммы, а не среднего.

...