什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
的一名成員提出的 LuckyTemplates 技巧。該問題涉及一種有用的模式,即查看給定月份的前 N 個工作日或前 N 個計費日與上個月同期的對比。您可以在本博客底部觀看本教程的完整視頻。
TJ Henneman 想要將當月的前 5 個計費日與上個月的前 5 個計費日進行比較,然後在第 10 天、第 15 天和第 20 天進行比較。請注意,他只想查看計費天數,所以這不包括週末和節假日。查看他的帖子。
我認為這裡有一個非常有趣的電源查詢解決方案。我還使用了一個有趣的DAX 解決方案來解決這個問題。我將在另一個教程中介紹後者。
我還想向您介紹我最近在 LuckyTemplates 挑戰 #16 中使用的報告技術。我使用了一個滾動的KPI指示器,它可以很好地解決這個特定問題。
但是對於這個 LuckyTemplates 技巧,我將涉及電源查詢解決方案。讓我們進入 LuckyTemplates 並查看我們的數據。對於這一個,我使用我們在 LuckyTemplates 上提供的練習數據集工具模擬了數據,您可以免費使用該工具。這非常適合將基本的星型模式數據集放在一起並測試解決方案。
目錄
我們的數據模型
我們的數據模型使用我們的擴展日期表和一系列維度表。我們還有一張Sales表,第一年是三年的部分數據,第二年是全數據,第三年是部分數據。最後,我們還有一個Measures 表。
我還稍微修改了這個數據集。我引入了一個Holiday 表並將其鏈接到Extended date 表,以便它可以正確計算我們將在此分析中刪除的假期。如果您不確定如何執行此操作,請查看本教程。
然後我過濾掉了數據集中的第一個部分月份,因為那個月只有幾天的數據並且沒有我們需要的工作日。請注意,我們從第一個完整月開始;但除此之外,這將是您的標準數據集。因此,讓我們跳入電源查詢並開始處理此 LuckyTemplates 技巧。
如果我們查看我們的數據,您會發現我們在特定的一天有不同的訂單。我們的目標是對從 4 月 1 日作為我們的第一個工作日、4 月 2 日作為我們的第二個工作日、4 月 3 日作為我們的第三個工作日等開始的所有內容進行編號。我們將每個月從 1 到 N 個工作日進行編號,同時剔除週末和節假日。
創建一個重複表
首先,我們需要創建該表的副本,以便我們可以匯總到Total Sales並將其納入個人觀察級別。我們將調用此重複表Sales Aggregated。
您可能已經註意到,我們複製了Sales 表,而不是僅僅引用它。在這種情況下,我們要將此表與原始 Sales 表連接起來。如果我們引用它,當我們加入兩者時,它會導致問題。
要做的第一件事是在OrderDate 列上使用Group By。單擊Advanced 按鈕,因為它會讓我們全面了解我們在這裡所做的事情。我們將把Total Day Sales作為我們的新列名稱,它將是我們的行總計的總和。
現在我們有了每個日期(第一列)和當天的總銷售額(第二列)。
合併日期表
此 LuckyTemplates 技巧的下一步是將其與我們的日期表合併,以確定哪些日子是工作日,哪些不是。我們可以再次分組,將它們分開,並適當地編號。
我們將合併我們的Dates 表並將OrderDate鏈接到Date。我們可以在底部看到選擇匹配表的每一行,因為它應該。
我們主要感興趣的字段是IsBusinessDay。
這是我們將分組的主要字段,然後使用Month & Year和MonthnYear字段。
我們還需要檢查DayofWeekName以確保我們過濾掉了正確的日期。
一旦我們點擊OK 按鈕,它就會為我們提供我們所需要的。
我們還必須確保我們的訂單日期按升序排序。
然後我們回去創建第二個Group By。
這一次,我們將單擊“高級”按鈕,對“月和年”進行分組,然後添加第二個分組。
第二個分組用於IsBusinessDay,因此我們可以對工作日為真的分組進行編號。
然後我們將創建一個AllRows 函數,這樣它就不會聚合,並且我們將能夠返回到原始的粒度級別。
這應該給我們嵌套表,我們可以在其中看到每個月的true表和false表。
創建自定義列
接下來,我們需要創建一個自定義列來添加工作日所需的計數。
我們將使用一個名為Table.AddIndexColumn的函數,它將對AllRows 表進行操作,我們將其稱為Day Index。我們希望索引從 1 開始,並在每個新工作日遞增 1。
然後我們可以刪除前三列,並擴展我們的第四個自定義列。
如果我們查看結果,它會為我們提供日索引,它計算工作日 (true),然後計算每個月的周末和假期天數 (false)。接下來,我們必須檢查這些字段類型是否正確。
讓我們回到我們的銷售表。我們將合併剛剛創建的聚合表和銷售表。
我們將在OrderDate上合併它們。您可以在底部看到它匹配第一個表中的所有行。
當我們展開 Sales Agg 列時,選擇我們剛剛添加的新字段:Month & Year、DayOfWeekName、MonthnYear、IsBusinessDay和DayIndex列。
在我們點擊Close & Apply之前,我們還要清理我們的數據。讓我們移動數據準備部分中的Sales Agg 表,然後卸載該表,因為我們在數據模型中不需要它。然後單擊關閉並應用。
我們的電源查詢準備工作現已完成。
創建假設參數
請記住,在最初的任務中,我們希望將觀察的天數從 5 天更改為 10 天,然後將 15 天更改為 20 天。我認為最好的方法是使用新的假設參數。
我們將假設參數稱為First N Business Days,其數據類型為整數。最小值設置為增量 1,最大值為 20。然後我們默認為 5,這是用戶想要的第一個值。
我們現在有一個切片器,可以自動創建收穫度量來捕獲切片器值。
讓我們用我們的結果創建一個表。讓我們將Month & Year維度放在畫布中,然後按Month & Year對其進行排序。
一旦我們對該字段進行了正確排序,我們就可以刪除Total Sales度量並將其展開。
為工作日數創建度量
我們需要再創建一個度量值來查看滑塊參數的值,並且只計算工作日數。
我們將此新度量稱為Total Sales N Bus Days。函數開始,因為我們肯定會改變上下文,以及我們的 Total Sales 度量。我們將使用Sales 表的
下一步是編寫我們要為滑塊考慮的條件。我們有在 Power Query 中創建的銷售日索引,我們希望它小於或等於前 N 個工作日值,這是切片器的收穫值。
例如,如果滑塊位於 5,我們需要 Sales 表中日期索引小於或等於 5 的所有日期。
然後我們要去掉非工作日。我們將引用日期表並使用 IsBusinessDay 字段。我們只會查看為 TRUE 的結果。
最後,將Month & Year的上下文帶回來並關閉該度量。我們現在應該可以開始了。
讓我們將新度量放入我們的表中。
我們可以將滑塊切片器帶到 10 天標記處,表格將在 10 天標記處動態計算。
結論
在此 LuckyTemplates 技巧中,我們討論瞭如何使用 Power Query 解決方案動態地進行同類比較。我們可以將其放入條形圖或折線圖中。
在我們即將推出的一些教程中,我們將了解 DAX 解決方案並實現 KPI 滾動條的可視化。
如果您喜歡本教程中涵蓋的內容,請不要忘記訂閱LuckyTemplates 電視頻道。
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的