webdevqa.jp.net

PowerQueryでパラメーターを使用する

パワークエリをパラメータ化する方法を理解するのを手伝ってください。

Webサービスに特定のデータを照会し、それを正しい方法で操作するPowerQueryクエリを作成しました。今日のタスクについてタスク管理システムにクエリを実行するとします。クエリは次のようになります。

Web.Contents("http://intranet/tasks?assignee=John", [Content=Text.ToBinary("")]),

正常に動作しますが、このワークブックをこのクエリと共有して、同僚が自分のタスクに使用できるようにしたいと思います。

Web.Contents("http://intranet/tasks?assignee={INPUT HERE}", [Content=Text.ToBinary("")]),

理想的には、「Assignee」と呼ばれるパラメータが必要です(たとえば、ブックのセル内)。このワークブックのユーザーが、クエリを実行する担当者を入力できるようにしたいです。 Peter、データを更新するときに、クエリが次のようにパラメータを使用するようにします。

Web.Contents("http://intranet/tasks?assignee=Peter", [Content=Text.ToBinary("")]),

PowerQueryエディターを開いてクエリコードを編集してほしくないのは、ユーザーがそれを行うのが怖くて、おそらく間違いを犯すからです。担当者を選択するためのワークブックのセルが最も有用なアプローチだと思います。

これは可能ですか?もしそうなら-どのように?

ありがとうございました

1
artemb

私はインターネットでこの解決策を見つけました。それはまさに私が探していたものです。

新しいクエリを作成し、高度なエディタを開いて、次のコードを貼り付けます。

let GetValue=(rangeName) => 
    let
      name = Excel.CurrentWorkbook(){[Name=rangeName]}[Content],
      value = name{0}[Column1]
    in
      value
    in GetValue

それを保存すると、次のような別のクエリで使用できるクエリ関数ができます。

GetValue("Password")

ブックで「パスワード」と呼ばれる範囲を探し、その範囲の最初のセルの値を取得します。

1
artemb

Queryレコードを使用してパラメーターを渡すことができます。セル値が前のステップNameに保存されている場合は、数式バーのfxボタンを使用して新しいステップを追加し、次の数式を追加できます。

= Web.Contents("http://intranet/tasks", [Content=Text.ToBinary(""), Query=[assignee = Name]])

プライバシーレベルが有効になっている場合は、プライバシーレベルのプロンプトが表示されます。適切なプライバシーレベル(この場合は両方とも組織)を割り当てるか、[オプション]ダイアログでプライバシーレベルを無効にするかを選択できます。