簡體   English   中英

根據每月目標計算每日目標

[英]Calculate daily targets based on monthly targets Sales Power bi

我有以下問題,但我無法繞開它,以一種整潔的方式來解決。

我想創建一個包含三行的折線圖。 我們稱其為廉價蛇。

在此處輸入圖片說明

  • 已創建的銷售訂單(黑色)
  • 發票訂單(綠色)
  • 每日目標(紅色)

每個銷售員。 對於已創建和已開發票的訂單,創建此圖很容易,因為它們都是按日細化的,因此創建折線圖很容易。

我只是在努力為目標創建/生成這樣一條線。 在這種情況下,我手動創建了一個帶有日期-銷售員-每日目標Eg的表。

在此處輸入圖片說明

這很麻煩。 我想做的是為每個銷售人員每月創建一個表,並且PowerBI可以“生成/計算”每日目標,這樣我就可以繪制紅線,而不必費心創建它手動為每個銷售人員。

輸入將是這樣的

+-----------+----------+--------------+--------+----------------+--------------+---------------+
|   Date    |  Month   | Salesperson  | Branch | Monthly Target | Daily Target | Business days |
+-----------+----------+--------------+--------+----------------+--------------+---------------+
| 1/01/2017 | January  | salesperson1 | test   |          73529 |         4325 |            17 |
| 1/02/2017 | February | salesperson1 | test   |          73529 |         4325 |            20 |
+-----------+----------+--------------+--------+----------------+--------------+---------------+

我有一個日期維度表,因此在我的圖表上,我將日期作為x軸,然后將runningorders / runningsales作為y軸,但我希望將其設置為每日運行目標,以便紅線與訂單和銷售。

我看了一下這種模式,但是我無法弄清楚如何生成折線圖。

https://www.daxpatterns.com/budget-patterns/

所以以某種方式,我想我需要一些東西來生成第二張表作為輸入的第一張表。 我在Dax中嘗試了一些措施,但沒有一個措施能給我提供每天的累積步驟。 它主要只是向我顯示了價值。

這些是我在其他行中使用的度量。 更改日期過濾器時,此方法效果很好。 進行銷售

RunningTotalSales = CALCULATE(sum(vw_invoice_trn_summary[NetInvoiceValue]),
                     FILTER(ALLSELECTED(DimTime),DimTime[Date] <= MAX(DimTime[Date])))

運行訂單

RunningTotalOrders = CALCULATE(sum(vw_orders_raised[OrderTotal]),FILTER(ALLSELECTED(DimTime),DimTime[Date] <= MAX(DimTime[Date])))

在我當前的手動解決方案中,由於我不確定我做得正確,因此全年無法很好地達到目標。

在此處輸入圖片說明

UPDATE

因此,請進一步考慮。 感覺就像我只需要能夠創建一個帶有日期-每日目標-銷售人員的表格。 基於每月目標,但不確定如何在Power Bi中做到這一點。 理想情況下,您只需添加/刪除銷售人員,即可重新生成該特定表。

我對此有兩種解決方案。 一種使用DAX,另一種使用查詢編輯器。


DAX解決方案:

1.創建一個包含您需要的所有日期的日歷表。

如果“ Targets是包含每月目標的表,請使用如下公式創建一個新表:

Calendar = CALENDAR(EOMONTH(MIN(Targets[Date]),-1)+1,EOMONTH(MAX(Targets[Date]),0))

2.創建一個新表DailyTargets作為您的日期和銷售人員的交叉DailyTargets

CROSSJOIN函數為每個日期和銷售人員組合創建一行:

DailyTargets = CROSSJOIN(VALUES('Calendar'[Date]),VALUES(Targets[Salesperson]))

3.為您的每日目標創建一個計算列。

我通過查找每月目標並除以該月中的天數來實現:

DailyTarget = DIVIDE(
    LOOKUPVALUE(Targets[MonthlyTarget],
                Targets[Month], FORMAT(DailyTargets[Date],"mmmm"),
                Targets[Salesperson], DailyTargets[Salesperson]),
    DAY(EOMONTH(DailyTargets[Date],0)))

現在,您有一個針對每個日期和每個銷售人員的每日目標。


PowerQuery解決方案:

1.創建一個包含您需要的所有日期的日歷表。

創建一個空查詢並使用以下代碼:

= List.Dates(List.Min(Targets[Date]),
             Duration.Days(Date.EndOfMonth(List.Max(Targets[Date]))
             - List.Min(Targets[Date])) + 1,
             #duration(1,0,0,0))

2.將此列表轉換為表格。

單擊“轉換”選項卡下的“至表”,然后將列從“ Column1”重命名為“ Date”。

3.為月份名稱創建一個自定義列。

您可以Date.MonthName([Date])使用公式Date.MonthName([Date])

4.將此查詢與“ Targets表合並(在“ Month列中聯接)。

5.合並后,展開“ Salesperson和“ MonthlyTarget列。

6.通過將每月目標除以該月中的天數來創建每日目標。

您可以[MonthlyTarget]/Date.DaysInMonth([Date])使用公式[MonthlyTarget]/Date.DaysInMonth([Date])

整個查詢應如下所示:

let
    Source = List.Dates(List.Min(Targets[Date]), Duration.Days(Date.EndOfMonth(List.Max(Targets[Date])) - List.Min(Targets[Date])) + 1, #duration(1,0,0,0)),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
    #"Added Custom" = Table.AddColumn(#"Renamed Columns", "Month", each Date.MonthName([Date])),
    #"Merged Queries" = Table.NestedJoin(#"Added Custom",{"Month"},Targets,{"Month"},"Targets",JoinKind.LeftOuter),
    #"Expanded Targets" = Table.ExpandTableColumn(#"Merged Queries", "Targets", {"Salesperson", "MonthlyTarget"}, {"Salesperson", "MonthlyTarget"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded Targets", "DailyTarget", each [MonthlyTarget]/Date.DaysInMonth([Date]))
in
    #"Added Custom1"

您可以按照需要將其粘貼到“高級編輯器”中,而不是一步一步地進行操作。 (只需確保使用具有的任何表名而不是Targets 。)

我有一個更簡單的解決方案:

我只需要能夠創建一個帶有日期-每日目標-銷售人員的表格。 根據每月目標

假設我有一個這樣的表:

在此處輸入圖片說明

其中“ Month包含每個月第一天的日期。 然后,我們使用查詢編輯器菜單(Add Column > Custom Column)添加自定義列“日期”。 我們將此公式粘貼到新列中:

= List.Dates([Month], Date.Day(Date.EndOfMonth([Month])), #duration(1, 0, 0, 0))

新列的每一行將包含該行月份內所有日期的列表。 通過單擊右上角的按鈕並選擇“擴展到新行”來擴展該列。

在此處輸入圖片說明

現在,您每天都有一行,您可以簡單地添加另一個自定義列“每日目標”,該列將每月目標除以每月的天數:

= [Monthly Target]/Date.DaysInMonth([Date])

您的桌子已經准備好了:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM