Power BI Desktop でWebデータを使うには
Power BI Desktop でWebページを読み込むには、Power Query エディターを開いて、新しいデータソースでWebを選択し、URLを入力します。
これを、詳細エディターを開いてM式のソースの部分では以下のようになっています。
ソース = Web.BrowserContents("https://ja.wikipedia.org/wiki/%E4%B9%83%E6%9C%A8%E5%9D%8246"),
これで作成したものを、普通にPower BIサービスに発行して設定画面を見ると、ゲートウェイ接続がオンになっており、オフにすることはできません。
まだ個人用ゲートウェイがインストールされていないので、更新をかけようとすると、エラーとなってしまいます。
個人用ゲートウェイをインストールし、Power BIサービスで更新ができるようになった後も、インストールしたPCが立ち上がっていなければ更新ができません。自動更新をさせるには、更新時に該当PCが稼働していないとできないのです。
ブラウザー機能を使うWebデータの取得には、セキュリティ上の問題が発生する可能性があるため、オンプレミスデータゲートウェイを経由してデータを取得する必要があります。インターネット上に公開されていない、イントラ上のWebコンテンツのデータも利用することができます。
個人用ゲートウェイとは
個人用ゲートウェイは、正式にはオンプレミス データ ゲートウェイ (個人用モード) 、英語表記では、On-premises data gateway (personal mode)と言います。Power BI でのみ機能するオンプレミス データ ゲートウェイのバージョンです。 自分のコンピューターにゲートウェイをインストールして、オンプレミスのデータにアクセスできます。
オンプレミスデータゲートウェイを必要としないWebデータ
インターネット上で公開されている、Web API、CSV、JSONなどのデータを取り込む場合は、そのまま取得することができます。
例えば、CSVデータを取り込む場合は、M式は以下のように、Web.Contentsで指定されたアドレスからのデータを変換して使用します。
ソース = Csv.Document(Web.Contents("https://covid19.who.int/WHO-COVID-19-global-data.csv"),[Delimiter=",", Columns=8, Encoding=65001, QuoteStyle=QuoteStyle.None]),
これを、Power BIサービスに発行しても、オンプレミスデータゲートウェイの設定を要求されません。
アプリケーションデータゲートウェイなしでWebコンテンツを読み込むには
インターネット上のWebコンテンツからデータを取得するのに、常にPCが起動していないといけないというのは面倒です。そこで、ちょっと細工してゲートウェイ無しでデータ取得できるようにします、
入力ソースの種類を「テキスト/CSV」にして、ファイル名にURLを入力してやると、入力ソースをWebにしたときと同様にデータの取得を行うことができます。ただし、この場合のM式は以下のようになります。
ソース =
File.Contents("C:\Users\n_fuk\AppData\Local\Packages\Microsoft.MicrosoftPowerBIDesktop_8wekyb3d8bbwe\AC\INetCache\FCJIWBZ6\乃木坂46[1]"),
これをこのままPower BIサービスに発行すれば、ソースがローカルファイルになっているため、当然オンプレミスデータゲートウェイが必要となります。
そこで、Power Query エディターのソースのステップをダブルクリックして、ローカルファイルを指しているファイルパスを、再度URLに書き換えてやります。
もう一度、詳細エディターを開いてM式を確認すると、今度は Web.ContentsでURLを見るようになります。
ソース = Web.Contents("https://ja.wikipedia.org/wiki/%E4%B9%83%E6%9C%A8%E5%9D%8246"),
Web.BrowserContentsはオンプレミスデータゲートウェイを必要としますが、Web.Contentsは必要としません。したがって、入力ソースの「ファイル/CSV」を使って、2度書きしてやるか、詳細エディターを使って、Web.BrowserContentsをWeb.Contentsに書き換えた後、Power BIサービスに発行してやることで、オンプレミスデータゲートウェイを使わずWebコンテンツを取得できるようになります。
参照:Microsoft Docs Web.contents