見出し画像

Power BI -ファイルパスとファイル名を変数(パラメータ)にしてファイルが移動しても簡単に参照先を変更できるようにする

エクセルファイルを参照するようなPower BIを作ったときに、
「このエクセルファイルが移動されてしまったら面倒だな」とか、「来月になったらファイル名が更新されるから面倒だな」思うことがある。

そういう時は、ファイルが移動したり、ファイル名が変更されてもすぐに、データソースを変更できるように、
フォルダアドレスとファイル名をパラメータとして設定していおくと便利。

毎回うるおぼえで忘れてしまいそうになるので、ここに簡単にまとめておく。

必要な作業ステップは2つだけ!(1と2ですね)

0. エクセルファイルを通常のやり方で取り込む

変数化する前に、まずは普通に取り込んでおく。

ファイルパス(フォルダ名とファイル名)を変数化するためには、「詳細エディター」からすでに自動生成されているm言語を修正する方法をとるため、まずは普通に取り込む。

Power BI desktopを立ち上げて、

画像1

今回はExcelを取り込むので、「Excel」を選択

画像2

今回は、私のデスクトップ上に置いているフォルダ
「C:\Users\●●●\Desktop\Power BI\Sample Data\Microsoft\Excel files」
に格納されているエクセルファイルを使用します。

画像3

取り込むテーブルを指定して、「読み込み」をクリック

画像4

こんな感じで、取り込まれました。

画像5

ここまでがいつもやっている、エクセルファイルの取り込み作業だと思います。
次から、この手動で選択したソースデータとなるエクセルファイルの、ファイルパス(フォルダアドレスとファイル名)を変数化していきます。

1. パラメータを設定する

フォルダアドレスだけ変更されるケースもあれば、ファイル名だけ変更されるケースもあると思うので、(私の仕事ではどっちが変更されるか分からないので)それぞれに、計2つのパラメータを設定しておくことにします。

まず、「データの変換」からクエリエディタ画面に戻ります。

画像6

そしたら、クエリエディタ>「ホーム」タブ>「パラメーターの管理」を押して、

画像7

「パラメーター」の管理画面が出てきたら、「新規作成」をクリックします

画像8

1-1.まずはフォルダアドレスのパラメーターを設定します。

パラメーターの「名前」を「para1」としておきます。
「種類」は、フォルダアドレスなので、「テキスト」を選択。
「現在の値」は初期値として何を入れるかですが、対象のエクセルファイルが保存されているフォルダアドレスを入れておく※。

※ちなみに、フォルダアドレスの最後は、「/」を入れておくことを忘れないように。(入れておいた方が手間が省けます)

画像9

「OK」を押すと、次の画面が表示されます。これでフォルダアドレスのパラメーターの設定は完了です。

画像10

1-2. 次にファイル名のパラメータを設定します。

ここまで来たら、ファイル名も、フォルダアドレスと同様に、パラメータを設定します。(説明は省略)

設定したらこんな感じで表示されます。(パラメーターの名前は「para2」にしました)

画像11


2. 詳細エディターでフォルダ名とファイル名をパラメータに置き換える

パラメーターを用意したら、次は「詳細エディター」を立ち上げて、ハードコードで入力されているファイルパスを、パラメータに置き換えていきます。

「詳細エディター」をクリックします。
下記のブルーのライン部分が、パラメーターへの置き換え箇所です。

画像12

パラメーターのpara1とpara2は繋げて一つのファイルパスになるわけですが、単純にこう書くとエラーになります。

//エラーになる例
para1 & para2

これはpara1とpara2を連結した際に型が明確にならないためだと思うのですが、詳しくは不明。
Text.From()のM関数を使ってテキスト型を指定すると、エラーは解消されます。(以下、詳細エディターの全文)

let
   ソース = Excel.Workbook(File.Contents(Text.From(para1 & para2)), null, true),
   financials_Table = ソース{[Item="financials",Kind="Table"]}[Data],
   変更された型 = Table.TransformColumnTypes(financials_Table,{{"Segment", type text}, {"Country", type text}, {"Product", type text}, {"Discount Band", type text}, {"Units Sold", type number}, {"Manufacturing Price", Int64.Type}, {"Sale Price", Int64.Type}, {"Gross Sales", type number}, {"Discounts", type number}, {" Sales", type number}, {"COGS", type number}, {"Profit", type number}, {"Date", type date}, {"Month Number", Int64.Type}, {"Month Name", type text}, {"Year", Int64.Type}})
in
   変更された型



あとはファイルが移動されたり、ファイル名が変更されたら、パラメーターの入力値を変えればいいだけです。


このやり方は、例だと1つのファイルなのでやる意味があまりないですが、同一フォルダに格納されている複数ファイルをデータソースとして使用している場合には、一括でファイル移動先を設定しなおしたりできるので、便利です。


以上になります。


この記事が気に入ったらサポートをしてみませんか?