![在 Power Query 中使用參數](https://rvso.com/image/1520081/%E5%9C%A8%20Power%20Query%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%8F%83%E6%95%B8.png)
請幫我弄清楚如何參數化 Power Query。
我建立了一個 PowerQuery 查詢,它在 Web 服務中查詢某些資料並以正確的方式對其進行操作。假設我在任務管理系統中查詢今天的任務。查詢可能類似於:
Web.Contents("http://intranet/tasks?assignee=John", [Content=Text.ToBinary("")]),
它工作正常,但我想與我的同事分享此工作簿和此查詢,以便他們可以將其用於自己的任務。
Web.Contents("http://intranet/tasks?assignee={INPUT HERE}", [Content=Text.ToBinary("")]),
理想情況下,我想要一個名為「受讓人」的參數(例如在工作簿的儲存格中)。我希望此工作簿的使用者能夠輸入他們想要查詢的受託人,例如 Peter,以便當他們刷新資料時,查詢使用他們的參數,如下所示
Web.Contents("http://intranet/tasks?assignee=Peter", [Content=Text.ToBinary("")]),
我不希望他們打開 PowerQuery 編輯器並編輯查詢程式碼,因為我們的用戶會害怕這樣做,並且可能會犯錯。我認為工作簿中用於選擇受讓人的單元格是最有用的方法。
這可能嗎?如果是這樣 - 怎麼辦?
謝謝
答案1
我在互聯網上找到了這個解決方案,這正是我正在尋找的。
建立一個新查詢,打開高級編輯器並貼上以下程式碼:
let GetValue=(rangeName) =>
let
name = Excel.CurrentWorkbook(){[Name=rangeName]}[Content],
value = name{0}[Column1]
in
value
in GetValue
保存它,現在您有了一個查詢函數,您可以在另一個查詢中使用它,如下所示:
GetValue("Password")
它將執行的操作是在工作簿中尋找名為「Password」的範圍,並取得該範圍中第一個儲存格的值。
答案2
您可以使用Query
記錄來傳遞參數。如果儲存格值儲存在上一個步驟中Name
,您可以使用公式列中的 fx 按鈕新增步驟並新增下列公式:
= Web.Contents("http://intranet/tasks", [Content=Text.ToBinary(""), Query=[assignee = Name]])
如果他們啟用了隱私級別,他們將看到隱私級別提示。他們可以選擇分配適當的隱私等級(在本例中可能是組織層級),也可以在「選項」對話方塊中停用隱私等級。