貨幣匯率表——使用 DAX 計算缺失數據

貨幣匯率表——使用 DAX 計算缺失數據

我將向您展示如何處理其中某些天數未被計算在內的貨幣匯率表。這些日子可能是周末或假期。

有時這可能不是問題,尤其是當您為其準備報告的企業在周末和節假日不營業時。但如果他們這樣做,您可能會在月底得到不正確的總數。

如果使用多種貨幣,了解如何處理缺失數據將使您能夠公平地比較銷售額。例如,可能有幾天您認為總銷售額正在下降,因為貨幣價值下降。實際上,總銷售額可能很低,因為您沒有考慮給定期間的所有天數。

在這個例子中,我將採用最後可用的貨幣匯率,並在缺失的日期使用它來填補空間。您可以在本博客底部觀看本教程的完整視頻。

目錄

給定貨幣匯率表中的數據

下面是事實表,即貨幣匯率表。它使用歐元作為基礎貨幣。

貨幣匯率表——使用 DAX 計算缺失數據

它顯示了 2016 年 1 月的數據以及每天的相關交叉率。

貨幣匯率表——使用 DAX 計算缺失數據

從 1 月 1 日開始,一切看起來都很好。但是當我打到 26 號時,下一排的下一個日期是 29 號。

貨幣匯率表——使用 DAX 計算缺失數據

這意味著我缺少 27th 和 28th 的數據

請注意,有些人可能更喜歡使用 Power Query 來處理這種情況。現在,我只想關注 DAX。

現在假設我想在 27 日和 28 日使用 0.920。這是 26 日使用的 Crossrate。我如何使用 DAX 做到這一點?

貨幣匯率表——使用 DAX 計算缺失數據

有人可能會說這可以在 Excel 中輕鬆完成。他們在某種程度上可能是對的。

但 LuckyTemplates 優於 Excel 的優勢在於能夠從不同的角度進一步深入研究數據,而無需重做或更改任何內容,這很可能發生在 Excel 中。

我將向您展示您需要考慮的所有措施,以及我將採取的不同步驟來覆蓋貨幣匯率表中的任何缺失數據。

貨幣匯率措施

首先,讓我向您展示我的主桌。我這裡已經有一些數據,包括歐元日期貨幣匯率

貨幣匯率表——使用 DAX 計算缺失數據

在這種情況下,貨幣匯率僅使用函數。

貨幣匯率表——使用 DAX 計算缺失數據

由於我每天處理一種貨幣匯率,因此很容易使用SUM或任何類似函數。每行顯示的數據完全有意義。

這裡唯一的問題是Total會發生什麼。

貨幣匯率表——使用 DAX 計算缺失數據

這顯示總計為 26.693,這根本沒有意義。它實際上只是總結了所有天的貨幣匯率。因此,我必須找到一種方法來迭代這些天以獲得真正的 Total

因此,我將查看我的貨幣日期度量來嘗試解決該問題。

當前日期度量

就個人而言,我總是進行當前日期測量,以引入我在當前過濾器上下文中的任何日期。

貨幣匯率表——使用 DAX 計算缺失數據

我也更喜歡使用。在此示例中,使用MAX函數將得到總計的 1/31,這更有意義,因為這是最後給出的日期。

貨幣匯率表——使用 DAX 計算缺失數據

最後貨幣日期

我的表格還包含Last Currency Date。我通過使用函數並引用FactCurrencyRatesDate表來獲得它。

貨幣匯率表——使用 DAX 計算缺失數據

雖然這顯示了LASTDATE函數,但也可以使用MAX這使用與當前日期表相同的前提,但給出了與貨幣匯率表相關的特定時間點。

向下滾動,我可以看到該月的 27 號和 28 號沒有數據。

貨幣匯率表——使用 DAX 計算缺失數據

為了解決那些缺失的日子,我將討論最後報告的貨幣日期列。

最後報告的貨幣日期

最後報告的貨幣日期將決定為缺失的日期使用什麼匯率。其概念是最後報告的貨幣匯率將與在缺少數據的日子裡使用的匯率相同

由於 27 日和 28 日都沒有數據,這意味著將應用 26 日的數據。

貨幣匯率表——使用 DAX 計算缺失數據

我們的示例還表明,最後報告的貨幣日期不一定是前一天。由於也沒有 27 日的數據,我仍然必須回到 26 日才能確定 28 日使用的匯率。

在我跳到展示這是如何完成的措施之前,請記住這裡的一切都是在過濾器如何工作的背景下發生的。我必須考慮我要關注哪些具體數據。

由於我在本月 27 日排在行中,因此我想刪除所有篩選器引用並專注於 26 日。這意味著使用,因為它們允許我修改應用的過濾器。不要將其與函數混淆,後者只能進一步限制數據。

所以這是我用於Last Reported Currency Date 的度量。我在這個例子中使用了CALCULATE 。

貨幣匯率表——使用 DAX 計算缺失數據

我總是試圖找到盡可能多的變量。我只需要查看每個變量的範圍,因為變量在定義它們的位置取值

在這種情況下,我將使用當前日期,因為我知道無論我使用什麼函數,這個變量都不會改變。

貨幣匯率表——使用 DAX 計算缺失數據

請注意,不需要找到此變量。這只是一個習慣,讓我可以檢查我將在度量中使用的每個變量的範圍。

回到度量,我如何告訴 DAX 刪除Current Date的過濾器並給我Last Recorded Currency Date

我將對ALL (DimDate) 表使用FILTER

貨幣匯率表——使用 DAX 計算缺失數據

ALL函數刪除應用的過濾器,打開 DimDate 表供我使用。

然後,我使用MIN告訴 DAX 我想使用 DimDate 列中等於 Last Currency Date 或 Current Date的部分。

貨幣匯率表——使用 DAX 計算缺失數據

如果最後貨幣日期當前日期不同怎麼辦?然後始終使用Last Currency Date

這就是為什麼在 1/26 和 1/27 之間,該措施將採取 1/26。從這裡開始,正確的日期將應用於Currency Rates表以獲得Last Reported Currency Rate

最後報告的貨幣匯率

讓我將上次報告的貨幣匯率拖到我的表格中。

貨幣匯率表——使用 DAX 計算缺失數據

您會看到 27 日和 28 日現在使用 0.9200 作為貨幣匯率,因為它與 26 日使用的匯率相同。

貨幣匯率表——使用 DAX 計算缺失數據

以下是我用於上次報告貨幣匯率的衡量標準。

貨幣匯率表——使用 DAX 計算缺失數據

同樣,我總是從定義一些變量開始。在這種情況下,我使用Currency SelectedLast Reported Currency Date

我將使用Currency Selected,因為我在這里處理不同的貨幣。這就是為什麼我需要在任何給定時間查明正在評估的特定貨幣。

貨幣匯率表——使用 DAX 計算缺失數據

在此示例中,可以使用給定的切片器訪問不同的貨幣。

貨幣匯率表——使用 DAX 計算缺失數據

當然,它不一定是正在使用的切片器。它也可以來自表格或視覺對象。重要的是有一個過濾器允許您查看不同貨幣的數據。

至於 LastReportedDate 它與我之前談到的Last Reported Currency Date是一回事。

貨幣匯率表——使用 DAX 計算缺失數據

對於Rate變量,我使用了函數。

貨幣匯率表——使用 DAX 計算缺失數據

我從CurrencyRates的事實表中引入Crossrate

貨幣匯率表——使用 DAX 計算缺失數據

因為我在一個表中有很多貨幣,所以我不能只使用日期作為一個參考點。它必須是正確貨幣和正確日期的組合。

這就是為什麼我還引用貨幣代碼等於Currency Selected 的原因。

貨幣匯率表——使用 DAX 計算缺失數據

我還引用了LastReportedDate

貨幣匯率表——使用 DAX 計算缺失數據

這就是為什麼看表,它在跳到第 29 之前顯示了 3 次第 26。

貨幣匯率表——使用 DAX 計算缺失數據

使用上次報告的價格與使用當前日期轉換的銷售額

我現在處於最後階段,涉及使用Last Reported Currency Rate轉換銷售額。

基本上,該度量只是採用此Last Reported Currency Rate並將其乘以Base Measure,在本例中為Total Sales

貨幣匯率表——使用 DAX 計算缺失數據

應用該度量後,您會看到這兩個日期最終為空。這意味著這些日期沒有銷售

貨幣匯率表——使用 DAX 計算缺失數據

還發現 27 日和 28 日有銷售(之前沒有貨幣數據)。

貨幣匯率表——使用 DAX 計算缺失數據

由於我引用了Last Reported Currency Rate,這些數字已轉換為歐元。

這一次,我將向您展示使用當前日期轉換後的銷售額。

貨幣匯率表——使用 DAX 計算缺失數據

這一次,它只查看當前日期,而不考慮上次報告日期

貨幣匯率表——使用 DAX 計算缺失數據

一旦我將該度量值放入表的另一列中,它只會在 27 日和 28 日顯示空白。

貨幣匯率表——使用 DAX 計算缺失數據

比較使用Last Report Rate與使用Current Date之間的Converted SalesTotal顯示出巨大的差異。

貨幣匯率表——使用 DAX 計算缺失數據

如果使用最後報告日期轉換的銷售額顯示總數超過 400 萬,則使用當前日期轉換的銷售額僅顯示總數 380 萬。

這就是了解您使用的變量非常重要的原因。如果你看一下總計,它看起來只是歐元受到重創,將價值拉低。但實際上,Total 的下降是因為 Currency Rates 表中的數據不明。

清理數據

現在我已經填寫了缺失的數據,我要清理表格。

我剛剛在這裡添加了一個格式化的銷售列,清楚地顯示了以歐元為單位的數字。

貨幣匯率表——使用 DAX 計算缺失數據

由於我經歷了這麼多步驟,我在這裡積累了相當多的專欄。

貨幣匯率表——使用 DAX 計算缺失數據

但並非所有這些都是呈現數據所必需的。因此,我將繼續並通過在“值”窗格下刪除它們來擺脫它們。

貨幣匯率表——使用 DAX 計算缺失數據

一旦這些被刪除,我最終得到一個更乾淨的表,只顯示必要的數據。

貨幣匯率表——使用 DAX 計算缺失數據

請注意,我仍然可以使用右側的切片器更改貨幣。

貨幣匯率表——使用 DAX 計算缺失數據

為了使我的表格更加詳盡,我將通過關閉單選選項來添加所有其他貨幣。

貨幣匯率表——使用 DAX 計算缺失數據

這將以美元、歐元和英鎊顯示我的數字。

貨幣匯率表——使用 DAX 計算缺失數據

我還在這裡看到一些空白區域,代表沒有銷售的日子。

我將通過關閉“顯示沒有數據的項目”來刪除它們。

貨幣匯率表——使用 DAX 計算缺失數據

現在,該表僅包含代表銷售日期的行。

貨幣匯率表——使用 DAX 計算缺失數據

這使我可以很好地比較基於不同貨幣的數字。

總計也顯示了正確的數字,因為我使用遍歷每一行。

這個非常重要。如果您不使用SUMX,它最終只會添加所有列而不考慮是否使用了正確的貨幣匯率。


在 LuckyTemplates 中創建貨幣換算表
LuckyTemplates 中的多貨幣邏輯——一個 LOOKUPVALUE 示例
格式貨幣在 LuckyTemplates 中使用 DAX

結論

正如我之前提到的,這不一定是處理丟失數據的唯一方法。實際上還有很多其他方法可以做到這一點。

例如,在某些情況下,您可以使用月初的數據並在整個貨幣匯率表中應用相同的數字。以後我將在單獨的博客中討論這些其他方法。

現在,我使用這種方法是因為使用上次報告率對我來說最有意義。我相信這是最直觀的選擇。

我還想強調的一件事是需要從過濾器上下文中理解所有內容。如何覆蓋過濾器?如何引入上次報告的數據?這些將幫助您了解如何最終獲得正確的數字。

一切順利,


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的