在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

在本教程中,您將了解如何使用 Power Query 在 LuckyTemplates 中進行貨幣換算。您可以在本博客底部觀看本教程的完整視頻。

本博客中討論的方法將幫助您使用最新可用匯率解決貨幣匯率表中的問題。

當貨幣匯率表沒有每一天的貨幣匯率時,您將了解如何解決問題。

目錄

識別缺失數據

如果 Date 表沒有假期或週末的數據,就會出現此問題。

如果您在任何一天都沒有費率並且沒有考慮它,則不會轉換總銷售額等指標。

如果您查看此貨幣匯率表,它會顯示 2016 年 1 月的歐元匯率。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

但請注意,第 27 天和第 28 天缺失並且沒有比率。所以,如果你查看矩陣,你會發現 27 和 28 沒有費率。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

缺少度量的貨幣匯率只是實際貨幣匯率表的總和。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

表中的總數 26.6983 沒有意義。它只是高於它的所有貨幣匯率的總和,您不需要加起來,因為它們是當天的匯率。

現在,這可以在Power Query中修復,因為這更像是一個涉及查詢和聚合的數據建模問題。這也可以使用 DAX 完成,但使用 LuckyTemplates 中的 Power Query 更容易、更快速。

因此,單擊轉換數據,然後打開 Power Query 窗口。

這是缺少數據的表。您還可以在此貨幣匯率表中看到它包含歐元、英鎊和美元。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

然後這是具有 1 月 27 日和 28 日值的最終表。這是您應該擁有的表格或輸出。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

從您獲取數據的任何來源導入您的數據,只需更改數據類型。

區分不同的貨幣

接下來,如果您有不止一種貨幣,請務必按代碼將它們分開和分組。

當您對它們進行分組時,請確保將它們分組到所有行中,這樣如果您單擊歐元,例如,它只會顯示以歐元為單位的貨幣匯率。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

您還可以看到這裡缺少天數以及英鎊貨幣。

LuckyTemplates 中有一個叫做調用自定義函數的東西。這是一個帶有 FillMissingRates 的函數。

如果單擊 Euro,您將看到一個完整的表格,其中包含您在展開表格中看到的缺失數據。它按從最舊到最新的匯率排序。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

弄清楚自定義函數在做什麼。如果單擊 Invoke Custom Function 附近的齒輪圖標,您可以在 All 列中看到列名和來源。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

為此,請從基本表開始。進行轉換,獲得您想要的結果,然後使用它來構建函數。這比嘗試在擁有所有其他子表的表中執行此操作更有意義。

例如,如果您想關注歐元,請將其過濾到股票行情。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

要找出缺少的日子,請將其與您的日期表合併。

這是一個基本的向下過濾貨幣表和 DimDate 表:

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

對於 Join Kind,您可以使用 Full Outer 來引入兩個表中的所有行。這會向您顯示缺少的內容以及匹配的費率。

當你合併它時,它會給你一個完整的表作為子表。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

之後,對行進行排序,然後展開 DimDate 以僅包含 Date 列。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

現在,您可以看到一切都匹配了。當您按從舊到新對行進行排序時,您還可以看到缺失的兩天具有空值。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

填充缺失率

它們按此順序排列很重要,因為您將填充除 Date.1 之外的所有列中的所有空值。

填寫後,您可以看到空值已更改為歐元和最後可用匯率。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

接下來,從表中刪除不必要的列,例如 Date 列。

Date.1 列已有日期,因此不需要 Date 列。然後,將 Crossrate 設置為 Decimal Number。

最後,重新排序並重命名列,並確保設置了數據類型。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

您現在有一個完整的貨幣匯率表。

但是,這僅適用於此表。您必須找到一種方法將相同的邏輯應用於貨幣分組的表。

合併所有貨幣

如果您使用不同的貨幣,則很難維護不同的匯率表。因此,您需要將它們合併以製作一個貨幣表。

首先,通過單擊 Table 並選擇Create Function來獲取現有並創建一個函數。接下來,輸入函數名稱。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

之後,轉到Advanced Editor。刪除不需要的計算。在這種情況下,擺脫源、過濾器和更改語法。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

接下來,將參數命名為 Source,然後輸入 Let。由於刪除了篩選行,將合併查詢語法中的值更改為源。之後,刪除語法末尾的 Source,然後單擊 Done。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

現在,轉到“添加列”,單擊“調用自定義函數”。輸入列名稱,如所有數據。對於函數查詢,選擇之前創建的函數。選擇全部作為來源,然後單擊確定。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

接下來要做的是刪除除所有數據之外的所有列。然後,展開該列並取消選中“使用原始列名作為前綴”設置。之後,單擊確定並更改列類型。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

將 Date、Ticker 和 Crossrate 列的類型分別設置為 Date、Text 和 Decimal。完成後,單擊關閉並應用。

您現在將獲得一個沒有遺漏日期和匯率的組合匯率表。

在數據模型中創建關係

在您的數據模型中,您可以看到FactCurrencyRates表。現在,使用該表以及 DimCurrencyRates 和 DimDate 表創建一個關係,Ticker 到 Ticker 和 Date 到 Date。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

在您的矩陣中,拉入貨幣匯率 No Missing以查看它現在具有在 Power Query 中完成的 27 日和 28 日的匯率。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

Last Reported Currency Rate 列還顯示缺失日期的匯率。它顯示相同的比率和值。但它們之間的區別在於此列是在 DAX 中創建的。

這是該列的度量和語法。它不像僅使用Power Query 中的

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

查看表格,您會看到 Converted Sales No Missing 列。它顯示使用無缺失貨幣匯率列轉換的銷售額。具有轉換銷售額的另一列使用在 DAX 中創建的列。

用於獲取轉換後銷售額的函數是。如果您查看該列的度量,您可以看到 SUMX 遍歷 DimDate 表。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

比較 DAX 和 Power Query 方法

實際上,您可以在 LuckyTemplates 中比較使用 DAX 和 Power Query 的轉換後的銷售列。

為此,刪除除轉換後的銷售列之外的所有列。然後,啟動性能分析器,並單擊 Start Recording。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

接下來,打開 DAX Studio。它是一個應用程序,可以向您展示事物在您的模型中的工作方式和原因。之後,複製矩陣的查詢並將其粘貼到工作室中。

為了進行比較,先將其中一個變成註釋,這樣就不會干擾正在測試的另一列。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

然後,加載服務器計時和查詢計劃。由於您正在比較性能,因此在運行比較之前先清除緩存。

運行測試後,您可以看到使用 DAX 的列進行了大量掃描,總時間為 71 毫秒。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

現在,運行使用 Power 查詢的另一列。但首先,將語法中的另一列變成註釋。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

您可以看到該列只運行了 25 毫秒並且只有 7 次掃描。

在 LuckyTemplates 中使用 Power Query 解決缺失的貨幣匯率

您可以清楚地看到 DAX 和 Power Query 方法之間哪個執行得更快更好。

結論

在 LuckyTemplates 中使用 Power Query 方法的一個優點是數據已經存儲。因此,該度量可以找到速率,然後使用簡單的函數將其導出。

關於此方法的另一件事是,如果計算變得複雜,它不會減慢速度。

但是,這僅在您要求的數據不必即時轉換的情況下才有效。如果是,則必須使用 DAX。

一切順利,

Leave a Comment

在 Power Automate 中執行直到循環控制

在 Power Automate 中執行直到循環控制

了解有關 Do Until 循環控制如何在 Power Automate 流中工作的基礎過程,並熟悉所需的變量。

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

受限於 LuckyTemplates 中提供的標準視覺效果?學習使用 Deneb 和 Vega-Lite 為 LuckyTemplates 創建自定義視覺對象,提升您的數據可視化能力。

在 Power Automate Desktop 中將日期添加到文件名

在 Power Automate Desktop 中將日期添加到文件名

在此博客中,您將了解如何使用 Power Automate Desktop 自動將日期添加到文件名的開頭或結尾。

Power Query:如何快速添加註釋

Power Query:如何快速添加註釋

找出幾種不同的方法在 Power Query 中添加註釋,這對於不喜歡記筆記的人非常有幫助。

Power Apps – SharePoint 集成指南

Power Apps – SharePoint 集成指南

在此博客中,您將了解 MS Power Apps 界面的基礎知識並了解 Power Apps-SharePoint 集成的過程。

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

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

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

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

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

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

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

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

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

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

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

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

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

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