什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
我將向您展示如何在每次刷新時保持您的練習數據集更新。您可以在本博客底部觀看本教程的完整視頻。
如果你真的想提高你的 DAX 技能,方法就是使用它並將其付諸實踐。為此,您需要一個練習數據集來幫助您想像和處理可能的現實生活場景。
練習數據集的問題是數據通常是靜態的。為了有效地練習,您需要給人一種數據是實時的印象。
目錄
為實踐數據集設置文件路徑
對於示例數據,我有一個 Excel 文件,其中包含2014 年、2015 年和 2016 年的銷售數據。
這是我需要更新的數據。
文檔位置可以在我的快速訪問工具欄上找到。
我需要它來為我的文件路徑設置一個參數。所以我要復制那個文檔位置。
右側有一個快速訪問工具欄的訪問點。
一旦我按下它,我就會看到這個屏幕。
所以我會選擇All Commands然後選擇Document Location。將其添加到快速訪問工具欄,然後按確定。
現在,我將進入Power Query以創建將保存我的文件路徑的參數。此步驟很重要,因為它允許在另一個用戶更改文件位置時恢復模型內的所有查詢。
所以我將創建一個新參數。
我將調用它FileLocation。
在類型下,我要選擇Text。對於Current Value,我將粘貼到我之前複製的文檔位置。
我要創建一個新查詢。
然後我將選擇我將用作練習數據集的示例數據。
由於我有 2014 年、2015 年和 2016 年的銷售數據,因此這裡會出現許多不同的表格。我只需要選擇第一個,即Sales_2014。
現在我已經選擇了 Sales_2014 數據,是時候將該硬編碼文件位置更改為動態文件位置了。
我將進入高級編輯器並選擇與文件位置相關的所有內容。
然後,我會將其更改為我之前創建的 FileLocation 參數。
然後我將按完成將這些更改鎖定到 Sales_2014 查詢中。
創建數據準備文件夾
查看Sales_2014 查詢的應用步驟,我將單擊導航步驟。這表明它引用了源步驟。
它還引用顯示為Table 的Sales_2014。它還表明它正在從數據列中提取數據。
現在,讓我看看接下來的源代碼步驟。
源步驟向我顯示了駐留在我的 Excel 文件中的所有內容。如果我檢查這些坐標,我會看到Sales_2014,並且在 Kind 下,它顯示Table。
當我查找數據列時,它顯示了提取的Table對象。
所以我可以復制這個查詢來得到 2015 年的數據。為此,我只需右鍵單擊 Sales_2014,然後選擇複製。
然後,我將退回到導航步驟。
我會將那一年從 2014 年更改為 2015 年。
我還將在屬性下重命名它。我將其命名為 Sales_2015。
這次,我將復制 Sales_2015。
然後我將退回到導航步驟並將年份更改為 2016 年。
我現在有了完整的銷售數據。但是這些查詢不應加載到我的模型中。我只需要右鍵單擊它們中的每一個並取消選擇 Enable load。
現在,我將選擇所有查詢並將它們放在一個文件夾中以使事情更有條理。
我將此文件夾稱為Data Prep。
獲得一天的補償
數據準備下的示例數據將是靜態的。這意味著第一個和最後一個日期永遠不會改變。
因此,我將進入Sales_2016並按降序對訂單日期列進行排序,以從該數據集中獲取最後日期。
該數據集中的最後日期是2016 年 12 月 31 日。
現在,我將創建一個新查詢。
然後,我將檢查從數據集中的最後日期到今天的Day Offset是多少。這意味著我需要找出今天是幾號。為此,我將使用函數DateTime.FixedLocalNow。這將為我提供我正在使用的機器的日期和時間。
但我真的不需要這裡的時間部分。 我只需要這個值的日期部分。
所以,我將使用 Date.From 提取日期。
然後從該值中減去數據集中的最後日期。由於數據是靜態的,我可以使用固有的日期值。所以這是#date,然後參考 2016 年 12 月 31 日。
現在,我需要從這個差異中提取數字。所以我將添加Number.From並用括號將其關閉。然後,按回車。
我將其重命名為DayOffset。
設置動態日期範圍
我的日期表還需要動態日期範圍。我將首先右鍵單擊 Data Prep 文件夾並創建一個新的空白查詢。
然後,我將處理日期表的開始日期。
我總是希望一年中的第一天作為我的開始日期。所以我將放置等號並使用函數Date.StartOfYear。
因為我需要給它一個值,所以我將使用 Date.AddDays 來抵消它。
然後我將再次使用固有日期值並使用我的數據集上的第一個日期,即 2014 年 6 月 1 日。
我還需要我在 DayOffset 中計算的天數,所以我要添加它。
一旦我按下回車鍵,它就會給我January 1, 2017。這將是我日期表中的第一個日期。
我將其重命名為fxStartDate。
現在,我可以設置我的結束日期。我將復制我在開始日期使用的語法。
我將創建一個新的空白查詢。
然後將其重命名為fxEndDate。
然後我將粘貼 Start Date 中的語法。
我將把它改為 EndOfYear,而不是StartOfYear 。
我還將使用我的數據集的最後日期,即12 月 31 日。
當我按回車鍵時,它返回December 31st, 2020。
創建單個銷售表
我要將這 3 個表合併為一個 Sales 表。為此,我將創建一個新查詢。
我將其稱為我的銷售表。
然後,我會將Sales_2014、Sales_2015 和 Sales_2016 合併到一個表中。
我知道您可以通過功能區執行此操作,但也可以選擇直接在公式欄中執行此操作。我會選擇第二個選項。
我將從Table.Combine開始。
Table.Combine 需要一個表列表。所以我將添加一個列表初始值設定項,也就是那些大括號,然後我將命名 3 個查詢。之後按回車。
轉換訂單日期列
現在我已經擁有了我需要的大部分元素,我將生成語法的一個關鍵部分,稍後我將使用它來完成我的動態練習數據集。
我將從選擇兩個數字列開始。我可以使用Delivery Region Index和Product Description Index。在您這邊,您可以按下 Shift 或 Ctrl 來選擇兩列。
在Transform選項卡下,我將選擇Absolute Value。
如果我查看公式欄,它將顯示Table.TransformColumns函數。這是最終解決方案的關鍵。
該函數採用轉換列表的列表。如您所見,這裡有 2 個列表相互嵌套。
它將列名稱引用為文本。這就是為什麼在第 1 組此處引用了交付區域指數。
然後它添加了一個轉換步驟。
它在產品描述索引列的單獨列表中執行相同的操作。
現在,我將前往高級編輯器。
我不要絕對值。所以我要做的第一件事就是抵消我的日期。我將創建一個名為fxUpdateDate的函數來執行此操作。它將使用當前日期,我將其輸入為cDate。
然後,我將再次使用Date.AddDays函數,它也使用cDate。我還將使用我之前創建的DayOffset。
fxUpdateDate所做的只是獲取日期。因此,如果我將其傳遞給Table.TransformColumns函數,它將開始檢查每個記錄的日期。
因此,如果我在這里處理第一行,例如,它將考慮 2014 年 6 月 1 日作為 cDate。
每次調用該函數時,它都會添加我創建的 DayOffset。
現在,Table.Transform 步驟顯示在Calculated Absolute Value中。
我將首先重命名它並將其稱為 UpdateOrderDate 。
此UpdateOrderDate步驟涉及我的Table.TransformColumns,它等於源。
列出的初始表是Delivery Region Index。但沒有必要改變它。所以我要將引用的第一列更改為OrderDate列。
它還在這裡說轉換將是絕對值。
因為我不想要那個,所以我要把它改成fxUpdateDate。
類型也不會是絕對值,所以我也需要更改這部分。
我會把它改成約會。
我只需要一個轉換,所以我將刪除第二個列表以及該組附帶的轉換步驟……
…所以這只是 OrderDate 列的一個轉換。
因為我重命名了 Calculated Absolute Value 的步驟,所以我也需要在我的 in 語句中更改它。
現在它也顯示UpdateOrderDate 。
因此,OrderDate 列現在將為 Table.TransformColumns 中的每條記錄調用此函數。
查看訂單日期列,我可以看到它已更新。
如果我按降序排序,它會顯示2020 年 7 月 7 日為當前日期。
所以我將刪除排序步驟,因為我真的不需要它。我這樣做只是為了檢查當前日期是否也已更新。
使用 M 代碼應用時間智能
我的模型都是關於銷售數據的。因為我要做一些時間智能,所以我需要一個日期表。
所以我會去。在M 代碼展示中,我將進入擴展日期表主題。
向上滾動到頁面的最頂部並複制整個代碼。
回到我的模型,我將創建一個新的空白查詢並將該 M 代碼粘貼到. 按完成。
我將該查詢重命名為fxCalendar。
對於我的參數,我將使用1 月 1 日作為 StartDate,使用 1 月 31 日作為 EndDate。然後按調用。
表格出現後,我將其重命名為Dates。
請記住,我已經通過查看示例數據集上的第一個日期並用我的 DayOffset 抵消它來創建開始和結束日期。所以這裡的 fxStartDate 顯示為 January 1st, 2017。
至於 fxEndDate,它返回 2020 年 12 月 31 日。
我可以返回Dates表並在那裡更新該 Source 步驟。
它按照調用順序列出參數。第一個參數應顯示開始日期。
我要把它改成fxStartDate。
我還將替換第二個參數。
我將放入fxEndDate。
一旦我按下 Enter,轉換就完成了。我現在有一個完全最新的練習數據集,它將始終保持最新狀態。
我只需單擊“關閉並應用”即可鎖定所有這些步驟。
在 LuckyTemplates 中創建動態日期查詢表:查詢編輯器教程使用擴展日期表中的偏移函數
為 Power Query 日期表設置動態開始日期和結束日期
結論
正如我之前提到的,擁有自己的動態練習數據集肯定會提升您在 LuckyTemplates 方面的水平。它允許您在假裝您正在處理真實場景的同時練習您的技能和知識。
如果您想詳細了解如何使開始日期和結束日期動態化,尤其是對於您正在使用的練習數據集,您可以查看 LuckyTemplates 論壇。那裡有很多關於這個以及其他相關主題的對話。您甚至可能會找到其他適合您的方法。
一切順利,
梅麗莎
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的