什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
在本教程中,您將了解Power Query中的嵌套表達式、對象和環境。嵌套表達式和變量將用於討論環境如何工作並幫助生成數據。您還將學習處理轉換嵌套對象時的常見情況。
目錄
創建嵌套表達式
表達式被定義為用於構造值的公式。
公式欄中的表達式是從子表達式構建的。文字 1 和 2 是父表達式的子表達式。
變量被定義為命名值。這是一個示例記錄。
如果打開“高級編輯器”窗口,您可以看到查詢中使用的變量。
變量a、b和c每個代表一個值,該值是您經常在等號後面找到的表達式的結果。父表達式中的所有變量,即記錄本身,構成了該記錄的環境。在該環境中,每個變量都需要是唯一的。
因此,如果您添加另一個名為c的變量,您將在“高級編輯器”窗口下方看到一條錯誤消息。
記錄可以使用標識符或變量名訪問它的所有子表達式。但是,對於記錄中的嵌套表達式,每個環境都是不同的,因為它們可以訪問記錄中除自身之外的所有其他變量。
在此示例中,您可以看到變量c正在引用自身。
如果您按完成,您將收到一條錯誤消息。
如果您通過添加項目訪問運算符來提取c的值,您將得到一個結果。您也可以使用let表達式獲得相同的結果,因為對它應用了相同的規則。
了解環境中的嵌套表達式
這是記錄值的另一個例子。
打開Advanced Editor窗口,可以看到變量a和b共享同一個環境,也就是最外層環境。您還會看到變量x、y和z是父表達式a的子表達式。
每個變量都可以訪問嵌套記錄中除自身之外的所有其他變量。您可以調用存在於不同環境中的變量。在此示例中,您可以看到z正在引用外部環境中的b 。
變量x、y和z可以訪問b因為b是它們父表達式環境的一部分。您也可以在不同的環境中使用相同的變量。
在另一個示例中,您可以看到內部和外部記錄都有一個變量x。
變量在它們自己的環境中需要是唯一的。將使用分配給變量的最接近的x 。在此示例查詢中,使用內部x因為從記錄a的角度來看它更近。
在另一個查詢中,表達式中使用了最接近變量b的x 。
外部變量b可以使用項訪問運算符引用記錄 a 內的變量x 。您需要引用變量a,然後使用一組方括號訪問x 。同理,記錄a可以引用變量b中的變量x。
當嵌套記錄a的環境與父表達式中的變量合併時,會導致衝突,因為x存在兩次並且所有變量在其環境中都必須是唯一的。由於變量不能引用自身,因此通過引用外部x 來解決衝突。
解決常見場景
一個常見的場景是轉換嵌套對象。為了演示,將使用此表。
如果要從外部表中檢索一個值並將其放入嵌套表中,有兩種方法可以實現。第一種方法是使用“添加自定義列”選項。
單擊預覽窗格左上角的表圖標並選擇添加自定義列。
輸入 Temp 作為列名並在自定義列公式中輸入佔位符。完成後,按確定。
在公式欄內,通過向嵌套表中添加一列來將每個表達式替換為自定義函數。啟動自定義函數的邏輯並將其稱為OT for outer table。然後,添加 go-to 標誌。
接下來,使用Table.AddColumn函數添加一列。請參閱名稱列中的外部表中的表。然後輸入一個新的列名。
對於此示例,使用的列名稱是Revenue。輸入each函數以獲取 Get Revenue 列中每一行的值。
如果單擊 Temp 列中某行單元格內的空間,您將在預覽窗格下方預覽嵌套表格。您會看到每一行都有外表的值。
使用變量存儲值
轉換嵌套對象的第二種方法是使用變量來存儲值。首先,添加自定義列並輸入 Temp2 作為列名。對於公式,使用let表達式將值存儲在變量中。
輸入let然後寫一個變量名。對於此示例,變量名稱是myR。接下來,將該變量與 Get Revenue 列等同起來。之後,輸入in子句並使用Table.AddColumn函數向嵌套表中添加一列。
對於函數的第一個參數,輸入包含嵌套表的名稱列。接下來,將新列命名為 Revenue。使用each調用每一行的變量。
如果您單擊 Temp2 列中某行單元格內的空間,您將看到它從外表檢索了值。
另一種常見情況是沒有共享密鑰的查找。對於此場景,將使用 2 個示例表:類別表和產品表。
使用類別表作為登台查詢來補充產品維度表的屬性。由於沒有共享密鑰,因此無法執行合併。要做的第一件事是使用添加自定義列將完整類別表嵌套在產品表查詢中。
添加自定義列並將類別寫為列名。然後在自定義公式中,調用類別查詢。
之後,您現在已經在產品表的每一行中嵌套了完整的類別表。
當您單擊“類別”列中某行單元格內的空間時,您可以在每一行中看到完整的類別表。
檢索單個值
如果您只想檢索單個值,則需要將類別表過濾為一行,其中產品字符串的一部分與類別表中的產品組匹配。
通過按應用步驟窗格中添加的自定義旁邊的齒輪按鈕打開自定義列對話框。
在公式中,添加Table.SelectRows函數。對於第一個參數,使用類別表。第二個參數使用Text.Contains函數作為條件。對於內部表,此函數檢查文本是否包含外部表中產品字符串的一部分。
在訪問外表時,您會注意到Power Query在公式欄內添加了each關鍵字。它是一個一元函數,將下劃線 ( _ ) 作為無名變量。但是,由於您只訪問一個列,因此可以將其省略。
如果您單擊“類別”列中某行單元格內的空間,您現在將在每個嵌套表格中看到一行。
從那裡,您可以結合行和字段訪問運算符為類別提取值。
返回自定義列對話框並在公式中添加運算符。要獲取表格的第一行,請在一組大括號內輸入0 。然後,在一組方括號內列出字段名稱類別。
為了讓解決方案面向未來,您可以在末尾添加一個問號 ( ? ),以將未找到的行為從返回錯誤更改為 null。
查詢編輯器在 LuckyTemplates
M 語言中的工作原理和 LuckyTemplates 中的 Power Query Editor
結論
環境和嵌套表達式可幫助您的查詢從代碼中提取某些值以提供理想的結果。在編寫函數時了解它們很重要,因為當您了解它們時,您將能夠解決更高級和更複雜的場景。
梅麗莎
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的