ラベル OneDrive の投稿を表示しています。 すべての投稿を表示
ラベル OneDrive の投稿を表示しています。 すべての投稿を表示

2022/04/24

[Power Query] OneDrive パーソナル (onederive.live.com) の Excel ブックに接続する方法

Power BI は OneDrive for Business (中身は SharePoint で、URL に my.sharepoint.com が含まれるもの) のフォルダへの接続を前提にしているようで、サービス名が同じでややこしいのですが、個人が使う OneDrive (URL に onedrive.live.com が含まれるもの)への接続は「簡単には」許していないように思えます。それはもう7年も前のことで、以下のような投稿をしています。このときは OneDrive パーソナル(と便宜上呼びます)への接続方法を見つけることができませんでした。(2015年当時)

Power Query から https 経由で SharePoint の Excel ブックを開く

Googleスプレッドシート(ベータ)に接続する

最近 Power BI ユーザーさんのブログで Google スプレッドシートがベータとはいえ、Power BI から取り込み可能になった、と知りました。[データを取得] から「Google」キーワードで検索すると、ベータですが Google スプレッドシートが表示されるようになりました。

Googleスレッドシートを表示している URL を使い、Google アカウントでサインインして Power BI に取り込めました。また、Power BI Service にアップロードして、資格情報(Google アカウントによるサインインと、プライバシーレベルを Organizational)の再設定を行うことで、[スケジュールされている更新] が完了することを確認しました。

コネクタのリファレンス Googleシート(ベータ)
https://docs.microsoft.com/ja-jp/power-query/connectors/googlesheets

OneDrive パーソナルにある Excel ブックに接続したい

Google スプレッドシート同様に [データを取得] で OneDrive といれても、それらしい、わかりやすいサービスは列挙されません。[OneDrive 内の Excelブック] があればベストなのですが、残念ながら、そういう用途は SharePoint という前提なのでしょう。

データ分析的なフィロソフィーとしては、手入力の Excel をデータソースとしたくないのはわかります。それをするなら Power Apps でデータを収集すべきで、生スプレッドシートをいじらせるのは「綺麗なデータを用意する」という観点からもあまりお勧めできないからでしょう。そう、目指すは以下のような世界。

Power Apps、Power Automate、および Power BI を SharePoint Online と統合する

しかし、そのデメリットを理解した上でも、Google スプレッドシートが OK ならば、簡単に利用できる OneDrive パーソナルに保存した Excel ブックの Power BI への取り込みは世界中の Excel ユーザーと Power BI ユーザーが感じているはずで、2022年にもなれば何らかの解決方法があるのではないか?と思い、少しだけしつこく探して、、、見つけました! 2017年の投稿で、たしかにこの Embed の機能が2016年前後に追加されたのを覚えています。(訂正: Excel Web App で 2011年には存在していました)

PowerBI support for OneDrive Personal as data source
https://community.powerbi.com/t5/Power-Query/PowerBI-support-for-OneDrive-Personal-as-data-source/td-p/129125

実際に試して、上述の Google スプレッドシートの手順同様に Power BI Servcie にアップロードして、[スケジュールされている更新] もうまくいきました。その手順をあらためて紹介します。

1) OneDrive の Excel ブックで右クリックメニューで [埋め込み] を選択します

2) この操作がはじめての場合は URL生成のメッセージが右ペインに表示されるので [生成] をクリックします。[生成] ボタンの下に書いてあるように、これによりサインインせずにこのファイルを埋め込んだブログやWebページで表示できるようになります。セキュリティに注意してください。

3) プレビューと iframe コードが表示されるので、この iframe のコード内の、resid= から &em=数 まで (width の前) をコピーします。

4) Power BI に Web ソースとして入力する URL を作ります。以下の文字列に、上記 3) でコピーした文字列を追加し、&app=Excel で閉じます。

https://onedrive.live.com/download? <文字列コピー> &app=Excel

上記の例だと以下のようになります。

https://onedrive.live.com/download?resid=6E1B8001F99D3597%2179199&authkey=AACEgb0W3bmJHXs&em=2&app=Excel

5) Power Query で Web からデータをインポートを選び、URLをコピーします。[基本] で構いません。[OK] をクリックします。


6) ワークシートにテーブル オブジェクトが含まれていればテーブル名が表示され、SharePoint Online (OneDrive for Business) と同じようなナビゲーションが表示されます。


7) この pbix を Power BI  Servcie にアップロードし、データセットの [データ ソースの資格情報] のプラバシーレベルで [Public] を指定。(これは Embed コードは「一般公開」の設定のため - このプライバシーレベルは仕事で使う場合は常に注意ですね)


8) 資格情報を設定することで [スケジュールされている更新] の設定が可能になる。


以上となります。

この設定は Excel の取得と変換の [Web から] でも利用できます。


足かけ7年のモヤモヤが解消されました。

ただし、繰り返しますが、セキュリティとしては匿名アクセス可能な一般公開の URL を生成しています。一般公開されているデータ、特に公になっても問題の無いデータに限られ、不安であれば、SharePoint Online/OneDrive for Business で組織アカウント サインインの元でのデータ活用に切り替えたほうが良いと思います。ベータの Google スプレッドシートが認証を通しているのも納得できます。Goolge スプレッドシートも有力な選択肢ですね。

既知かもしれませんが、参考になれば幸いです。

2017/06/23

[Excel] Microsoft Flow で Excel を使う

Modern Excel

Power BI系のツールを調べていると Modern Excel (モダンエクセル)という言葉を見ることがあります。
これは Power Query や Power Pivot といった、Power なんとか系ツールを使ってお仕事を効率的にするための新しい Excel の使い方をさす「造語」です。

WHAT IS MODERN EXCEL? - ExcelTV(英語)
https://excel.tv/what-is-modern-excel/

Excel は製品の歴史が古いにもかかわらず、今でも多くのユーザーに使われ、それも業務の第一線で利用されている珍しいソフトウェアです。そのため、現場にこれまで蓄積されたテクニックや技術が数多くあり、鉄板ネタ、その世界では常識、といった手法や使い方が存在します。その反面、レガシーな方法でも多くのことができてしまうため、新しいツールや機能を積極的に取り込む「心の」ハードルが高くなっている、という状況も散見されます。

現在、モダン Excel の世界で Power Query や Power Pivot の緩やかな Excel 本体との統合が進んでいます。最新アップデートの Excel ではデータ タブの [データの取得と変換] は Power Query です。Power Pivot アドインを有効にしていなくてもデータ モデルやリレーションシップ、メジャーを Excel で使うことが可能です。

[Excel] データの取得と変換が標準になりました
https://road2cloudoffice.blogspot.jp/2017/06/excel.html

リレーションシップとデータ モデル
https://road2cloudoffice.blogspot.jp/2015/02/blog-post.html

[Excel BI] ピボット テーブルとメジャー
https://road2cloudoffice.blogspot.jp/2017/05/excel-bi.html

さらに、これから Excel との連携が進んでいくのは Power BI だけにとどまらず、 PowerApps と Microsoft Flow といったツールであるのは、ほぼ間違いないでしょう。OneDrive などのクラウド ストレージに保存されている Excel ブックをデータ ソースとして、PowerApps や Microsoft Flow で利用するパターンです。何やら難しい仕組みのようにも見えますが、これらのツールはタブレットやスマホなどの利用を前提とし、かつアプリ開発や設定もノンプログラミングでできることを目的にしているようです。

Microsoft Flow と Excel 

将来重要性が増すだろうツールの1つである Microsoft Flow (マイクロソフト フロー) という単語を見ると、なにかワークフローを扱って、難しそう、というイメージがあるかもしれません。

Microsoft Flow
https://flow.microsoft.com/ja-jp/


自動化するワークフロー、ビジネス プロセスの自動化、などを見ると難しそうですが、Excel ユーザーの観点から以下のようなことが Flow でできます。

  • Excel を開かずにワークシートのテーブルにデータを自動追加できる
Excel ブックのデータを読み込む、取り込む、といったことは Power Query で可能でした。Power BI系ツールでは難しく、VBA を使わなければならないのはブックへのデータの「保存」や「書き込み」の処理系でした。このエリアが Flow や PowerApps によって可能になりつつあります。

ただし、対象となる Excel ブックは OneDrive や SharePoint Online のフォルダーの中に作成することが必須です。クラウドが利用可能であれば、欲しいデータを欲しい形で「Excel のワークシート(のテーブル)」で扱うことができるので、いろいろとアイディアが膨らみますよね。Excel ブックとして扱うことはもちろん、レポートや分析は Power BI の得意の分野ですから、Excel ブックをデータ ソースとして利用することができます。

どのくらい Flow による Excel ブックへのデータの追加・保存が簡単なのか、順を追って見ていきましょう。

Flow で Excel を使うポイントは「テーブル」

Flow の設定は Web 上で行います。そのため、Microsoft Flow の Web サイトに「サインイン」する必要があります。Office 365 の組織アカウントか、Microsoft アカウントの利用が可能です。Power BI と違って、hotmail などのフリーのメールアドレスの Microsoft アカウントの利用が可能ですが、作成したフローを他の人と共有できません。他のユーザーとなんらかのコラボレーションをする場合は、Office 365 の組織アカウントをベースにする方向性なのでしょう。一人で試すだけであれば、いくつかの制限がありますが Microsoft アカウントでも利用可能です。
他のユーザーとフローを共有しようとすると表示されるアラート

Flow のサイトでは数多くのテンプレート(フローのサンプル)が用意されています。もちろんゼロから作ることも可能ですが、テンプレートを利用することで開発・設定の時間を大幅に削減することが可能です。

Excel ブックを保存先として使う場合のポイントは2つあります。
  • 事前に使用するブックを用意し、ワークシートに「テーブル」を作っておく
  • Excel Online でも、Flow のテスト時にはブックを必ず閉じる(ロックを避ける)
テーブルの列名はどんな名前でもいいです。フローの設定で、用意した列と保存するデータの突合せを行うことができるからです。とはいえ、どんなデータがフローのテンプレートで用意されているかを確認し、必要な列を準備することを考えれば、事前にテンプレートでデータの名前を確認して、それとわかる列名でテーブルを作成することになります。

なお、Excel の「テーブル」をあまり使ったことがない人も結構いるようです。モダン Excel では基本、テーブルの使用が前提となっていると考えて差し支えないでしょう。行・列からなるセル範囲とは全く別の新機能を提供してくれます。テーブルについては当ブログでも過去に紹介しているのでぜひ参照してください。

自動的に Excel にデータを書き込む

Office 365 のユーザーは Office 365 の組織アカウントを使って Flow を使うのが良いでしょう。他のユーザーとのフローの共有はもちろんですが、サンプルとして使う「一定間隔で何かする」という繰り返しの設定の上限がマイクロソフト アカウントを使った場合(無料プラン)と変わります。さらに Flow の Premium ラインセンスを購入することで利用できる機能が変わります。上限を超えた設定をするとアラートメッセージなどでも表示されますが、プランの種類と制限の確認は以下を参照すると良いでしょう。

マイクロソフト フロー プラン
https://flow.microsoft.com/ja-jp/pricing/

シンプルな Flow と Excel の連携のサンプルを紹介します。とてもシンプルですが、これを Excel のみで実現するには、、、と考えながら見ると面白いでしょう。
アカウントはあえて Microsoft アカウントの無料プランと OneDrive を使ってみますが、Office 365 組織アカウントを持っているならば組織アカウントで試すのがいいと思います。サンプルの処理は「15分おきに、特定の文字列と現在の時間を Excel のテーブルに追記する(=最後の行に追加していく)」です。よって、前提として

・マイクロソフト アカウント取得済み
・マイクロソフト アカウントで OneDrive が使える
・できれば Excel が PC にインストールされている(Excel Online のみで操作可能ですが、あったほうが吉)

です。
大まかな流れは、

・Microsoft Flow で新しくフローを登録する
・OneDrive で Excel ブックを新規作成し、データ保存のためのテーブルを準備する
・フローの Excel 操作のアクションで準備したテーブルを指定する
・フローを動かす
・Excel のテーブルにデータが追加されているのを確認する

です。

1) Microsoft Flow にサインイン


Office 365 の組織アカウントを使うのであれば、ポータルのランチャーから [Flow] を選びます。直接 Flow のページへは、https://flow.microsoft.com/ja-jp/ でいきます。

Microsoft Flow サービスのページからサインインします。サインイン後にトップバー(タブ)の [マイ フロー] をクリックして、マイ フローに移動します。


2) [+ 一から作成] をクリックして、フローを新規作成、名前を付ける


フロー名 無題 の無題の部分にフロー名を入力します。[コネクタ] から [スケジュール] をクリックしてフローに追加します。このスケジュールは、設定する間隔で「動き出す」部品です。フローの開発はこのように「部品」を選択して、組み合わせていきます。

3) スケジュール 繰り返しの設定


繰り返しのスケジュールトリガーはプランの最小値の 15 分にしておきます。
Microsoft アカウントを使った無料プランでは、この間隔の最小設定は 15 分です。Office 365/Dynamics365 のプラン は 5 分(ただし、5分未満もお試し版で試すことができます)、Flow プラン1 は 3分、プラン2は 1分(最小設定)です。


次に、Excel へデータを追加するアクションを追加します。上図のように [+ 新しいステップ] から [アクションの追加] をクリックします。

4) Excel 操作アクションの追加と設定

結論から言えば、ここではアクションのみ追加します。OneDrive の Excel ブックとテーブルの事前準備ができていないためです。
[コネクタ] の下にある [アクション] から [Excel 行の挿入] を選択します。


このアクションを選択したのち、OneDrive の Excel ブックを指定することになるので、ここで、OneDrive に Excel ブックを作成します。

今回の Excel への行の追加のサンプルの「フォーマット」は自由ですが、アクションによっては追加できるデータの種類と数が決まっています。事前にテーブルと列を用意するにも、どんなデータを取得し追加するかを調べる必要があるので、実際のところはテーブルを用意する前にここでチェックすることになります。

5) OneDrive 上に Excel ブックとテーブルを作成する

OneDrive上に Excel ブックを作成します。作成するフォルダーは自由です。デスクトップ アプリケーションの Excel でブックとテーブルを作成し、OneDrive にアップロードしたものも当然使えます。私のサンプルでは 1_WORKS という名前のフォルダーを作り、そこに ブック1.xlsx を作成しました。
OneDrive の Excel Online だけで操作する場合の注意点は、テーブル ツールが使えないことです。ちょっと「?」な仕様なのですが、Excel Online にてテーブルの作成は可能で、作成されるテーブルは日本語環境であれば「テーブル1」になります。しかし、テーブルの名前の確認や、名前の変更は Excel Online からできません。

以下のアニメーションGIFは、Excel Online だけでテーブルを作る手順です。 列名は 1, 2,3,4 で連番にしました。テーブル名の指定はできないので、この場合は「テーブル1」になります。[挿入] タブの [テーブル] で作成ができます。


なお、テーブルを作成し終えたら、Excel Online のブラウザは閉じてください。
コンシューマー OneDrive の Excel Online は、ブックを開くと「編集モード」で開いているため、ブックにロックかかり、Flow によるデータ追加が失敗するからです。(これは、業務運用上大きな考慮点になりえます)

6) アクションに Excel ブックを関連付ける

Excel ブック操作のアクションを選択すると、マイクロソフト アカウントを使用しているので OneDrive へサインインになりますが、接続先のクラウド サービスを変更することは可能です。たとえば、OneDrive for Business や SharePoint Online ドキュメント フォルダーにある Excel ブックも、適切なアクセス権が設定されているアカウントを使うことで利用可能です。

Excel 行の追加のアクションを追加して、OneDrive 上のブックを指定します。ブックを指定することで、ブックに含まれるテーブルがリスト表示されるので、それを選ぶと、テーブルに含まれる列すべてが表示され、列に追加するデータを指定することが可能になります。


7) 追加データを列に設定する(行の追加日時の設定方法)

業務利用の場合は、イベント間隔の部品 [スケジュー 繰り返し] と Excel ブックへのデータ追加の部品 [行の挿入] の間に「なんらかの処理をする部品」を配置して、その結果を Excel に取り込みますが、今回は直接 [行の挿入] で入力データを設定します。
文字列はそのまま同じ文字列挿入の繰り返しになりますが、ここに変数や関数があれば、イベント毎に処理をして Excel に書き込むことができます。
Excel ユーザーとして、だいたい一番最初にやりたくなるのは、行が追加された日時(タイムスタンプ)を入れることです。ワークシート関数に NOW() を入れたけど、ワークシート更新するたびに数値が変わる、どうすればいい?のアレです。

列1に文字列の「Excel-Flowテスト」
列2に Flow で日時を取得するワークフロー定義言語の関数 utcnow()
列3に 世界標準時刻 utc に 9 時間追加した日本標準時刻
列4に yyyy/MM/dd HH:mm:ss 表示の日付・時刻

上記データを追加するための列設定は以下です。

列1
Excel-Flowテスト

列2
"@{utcnow()}"

列3
"@{addhours(utcnow(),9)}"

列4
"@{formatDateTime(addhours(utcnow(),9),'yyyy/MM/dd HH:mm:ss')}"

特に列4の英文字の大文字・小文字に注意してください。大文字の MM は月を、小文字の mm は分を、HH は24時間表示など、それぞれ意味があります。
utcnow() や addhours()、formatDateTime() は「ワークフロー定義言語」の関数です。M言語や DAX、R言語も Power BI でやらなきゃなぁ、と思っていたところにワークフロー定義言語 (Workflow Definition Language)がやってきました!これも避けては通れない言語でしょうね。ただ、大きなトレンドは「如何にコードを書かせないか」なので、将来的に学習コストは最小限になることを期待しましょう。
また、関数の前後についているダブルコーテーションは必要です。


ワークフロー定義言語については、まずは以下を参照されるといいでしょう。

Azure Logic Apps のワークフロー定義言語
https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-workflow-definition-language

また、Microsoft Flow は Azure Logic Apps をベースに作成されています。上記のようにワークフロー定義言語などの資料は Azure Logic Apps のものが参照できたりします。
Microsoft Flow と Azure Logic Apps の関係は以下のページが参考になります。

Flow, Logic Apps, Functions, WebJobs の比較
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs

8) フローを保存し、動かす

フローの作成をクリックすると、保存され、実行されます。


エラーがなければ、完了をクリックのメッセージが表示されます。[完了]5D; の 5D; はバグですね。


完了を押さずとも、初回のフローが実行されて、その結果が再描画され表示されます。


完了をクリックすると、編集モードが終了します。
Excel ブックを確認すると、以下のようにデータが追記されていることが確認できます。


ダブルコーテーションで囲まれている文字を挿入しているので、Excel としては "2017/06/22 16:20:05" は日付データのシリアル値ではなく、文字列です。列2から列4のワークフロー定義言語の書き方の検討余地はまだあると思いますが、たとえば "@{utcnow()}" の両端のダブルコーテーションを最初からとると駄目です。少し動きが怪しいのですが、ダブルコーテーションをつけることで確実に関数として動きますが、最初から外して関数を利用しようとすると「文字列」として処理されます。ただし、一度ダブルコーテーション付きで登録し動いているフローを、あらためてフローの編集で両サイドのダブルコーテーションをはずすと、ダブルコーテーションがない日付文字列が入ります。どうやらデータ挿入のためのワークフロー定義言語関数の処理と JSON の構成方法に課題がありそうです。まずはダブルコーテーション必須で覚えておいたほうがよさそうです。

ちなみに、これでタイプミスなどでエラーになった、もしくは上述のワークフロー定義言語の書き方を変える、などフローを更新した場合、間隔の15分待つことはありません。[再送信] や [今すぐ実行] をすることで、最小設定時間以内でもフローを動かすことができます。


Excel のテーブルと Flow

Flow で Excel を使う場合は、事前にExcelのテーブルを用意しますが、Flowにおけるテーブル利用時の特徴・注意点は「セルの数式は使用できない」です。数式によって値を算出するセルをテーブルの列として使うことができません。Flow によって新しく追加した行には、テーブルで事前に定義された数式はコピーされません。A列に1、B列に2だけをいれて、C列で =A+B で 3 にするようなパターンです。コピーされないというより、数式がクリアされる感じです。

文字列や数値はそれほど扱いに困りません。何も設定していないセルの書式「標準」で事足ります。一方で、シリアル値は、上記の 8) で紹介したように utcnow() で世界標準時をとり、addhours() で9時間足せば日本の時間になりますが、 2017-06-22T09:50:51.0064743Z のような記述になり、このままセルに入力しても日付データとして Excel は認識せず、文字列として扱います。また繰り返しになりますが、ダブルコーテーション問題もあります。

なんだ、結局使えないじゃないか、と考える前に、この「Excel を起動することなく、自動的に、ブックにデータを追加する」という仕組みは、これまでプログラム開発が必要になるものでした。それ、Excel の仕事じゃないですよね?と言われる範疇のものです。これをノン・コーディングで可能にするのが Flow です。

後処理を Excel 中心にすると、どうしてもビックテーブル(ビックデータじゃありませんよ)で考えがちです。ビックテーブルとは、すべてのデータを含んだ1枚の大きな表です。その Excel のビックテーブルと、数式が使えない、ブックを開いているとロックする、といった Flow の制限を組み合わせると活用が難しく感じられますが、Power BI を使ってデータ ソースとして Excel ブックを指定すると Excel でブックを開くことなくデータを取得することができ、Power Query のデータクレンジングとデータの型変換を持つ ETL 機能を使えば、ダブルコーテーション付きのテキスト文字列を日付のシリアル値に変えることはクリック操作のみで可能です。異なるブックのテーブル間のリレーションシップによるマージも可能です。

制限や考慮点がある、情報がまだまだ少ない、といった状況ですが、モダン Excel の重要な要素の1つであることは間違いないので、引き続きウォッチしていく価値はあると思います。

まとめ

Excel と Flow の関係を紹介してきましたが、Excel を扱うアクションは行の挿入だけではなく、行の取得もあります。取得するを開始する行番号をスキップ数で指定し、そこから指示した行数分のデータを全列分取得します。Flow の内部では、取得したデータは JSON形式で保持され、次のアクションで利用されます。

どんなことが Flow と Excel の組み合わせでできるかはテンプレートを参照するのが一番です。Excel を含むテンプレートの一覧は、Flow のトップページの検索ボックス [最初に使用するテンプレートまたはサービスを探す] で Excel を入力して検索すると表示されます。


以上、長くなりましたが、参考になれば幸いです。

2016/04/11

Power BI Desktop - Excel とどこが違うのか

Power BI アドイン for Excel で、Power Query や Power Pivot を使っている Excel ユーザーにとって、Power BI Desktop はなかなか「使う場面が無い」という状況かもしれません。

ところが、データを加工する、保管する、という目的ではなく、「レポートを作成しメンバーと共有する」ということを最大の目的とすると、Microsoft の製品やサービスでは Power BI サービス (https://powerbi.microsoft.com/ja-jp/) の利用を検討することになるでしょう。この BI レポートの活用のエリアは Microsoft 以外では「脱Excel」を掲げて様々なサービスがしのぎを削っている分野でもあります。(他には Tableau や Oracle の BICS など、BIツールで多数あります。)

方や、、、圧倒的なユーザー数を誇る Excel でも Power View を使って Power BI で利用できる「レポート」を作成できるとはいえ、Power BI アドイン for Excel は、Office のバージョンに注意してもエディションが Professional Plus が必要なものがあったり、Office 365 ProPlus の Excel しかサポートされていないものがある、Power View の扱いがどうにも(Silverlightだったり、リボンになかったり)、、、といった状況から、無料ツールである Power BI Desktop の利用機会が増えるか、Power BI Desktop と同じ使用感の Power BI Service (Web) 上での[レポートの編集]を使う場面が増えてくるようにも感じられます。(いや、、、はっきり言って使いづらいですよ。Office 365 ProPlus = Office 365 の E3 以上 ならいいんですけど、パッケージの Office/Excel とか大変です。) 



そこで、いざ、Excel でピボットテーブルを使ってレポートを作っていたユーザーが、Power BI Service の Web 上のレポート編集ツールや Power BI Desktop を使ってレポートを作ろうとすると、勝手が違うので戸惑ってしまいます。

ええ、私が最初そうでしたから(笑

このブログの(長い)タイトルが「Excelユーザーのための、、、」なので、Excelユーザー視点で、Power BI Desktop での表や、グラフの作り方(=ビジュアルの使い方)を考えてみたいと思います。

Excel ブックのデータをそのまま使える Power BI

Power Query(Excel 2016~だと [取得と変換] )と同様の機能が Power BI Desktop でも使えるので、データの取得と変換を Power BI Desktop でも同じことができるのですが、ここでは話を簡単にするために、様々なデータソース(SharePoint や Access や SQL Server など)から Excel にデータを集めて、現在は Excel で分析用のデータを収集しているとしましょう。



そのデータをそのまま Power BI Desktop で使えるのが魅力です。

ローカルのPCや、OneDrive、 SharePoint のドキュメントライブラリなど、さまざまな場所にあるブックをデータの取得先として指定、編集できるのも大きな魅力ですが、今回は、分析・グラフ化を主眼にしますので、すでに、データセットとして Power BI Desktop に取り込んでいる、というところから話を始めます。


「ビジュアル」(視覚化)の種類を知らないと話にならない

データはそこにある。そして、そのデータを「どう見せたいのか」。これが決まっていないと話にならない、、、Power BI Desktop では、そんな感じがします。

Excel では多種多様なグラフを作成することができます。


Power BI Desktop の既定のビジュアルの種類は以下です。


ここで、きれいなグラフを作ろう、Power BI 的にはスライサーとかを使った対話型のグラフのレポート(Power View に相当)を作ろう、となると思いますが、Excel ユーザーはそこから入ると、ちょっと最初の1~2歩を飛ばしている感があります。

たとえば、Power BI Desktop で「オートフィルター」で絞り込んだ生データを作るのはどうするか?この普通に Excel でやるデータ加工を Power BI Desktop でやってみます。

「テーブル」すらビジュアル

ワークシートのテーブルで生データを確認しながら、オートフィルターをかけてデータを絞り込む、、、という作業が当たり前な Excel からすると、「え?」と思うかもしれませんが、「絞り込んだ後の結果を見る」ということですら、「ビジュアル」を作る必要があります。

データセットにフィルター(絞り込み)をかけてしまうのはいただけません。他の絞り込み条件ができなくなるからです。データセットはなるべく必要最小限で加工した「生データ」を持っているべきと言えます。

ということで、Power BI Desktop のビジュアル = 視覚化 を見ると、「テーブル」があります。


このテーブルを選択すると以下のようなビジュアルのテンプレートが作成されます。


まさに、、、テーブルのような表の様相ですよね。
実際のデータは以下のような Excel のテーブルがデータセットとして登録されています。


では、東京だけのデータセット(Excelブック)と同じ表(テーブル)を作ってみましょう。
作る手順が以下です。(え~それ?と思うでしょうが、これが、最初はできない、、、笑)

1) [レポート]を選んだ状態で、視覚化(ビジュアル)で [テーブル] をクリックしてテーブルのテンプレートを作る
2) データセットの列の左からの順番で [フィールド]の列項目をその順番通りに選ぶ(順番が大事)
3) ページ(=ワークシート的)で絞り込みの条件を設定したいのであれば、ページレベルフィルターに、フィールドにある [場所] をドロップして、東京を選択

という手順を以下のアニメーションGIFで。途中で表示のフォントサイズを変えたりしていますが、キーとなる手順はわかると思います。


日付データに関しては、いろいろなオプションや勝手にやっちゃってる感じの処理がいっぱいありますが、まぁ、こんな感じの操作になります。このように、テーブルや表というグラフじゃないデータ表現も、確実に、完全に、Power BI でやることができます(やる人がいるかどうかは別ですがw)

これは、単純な表・テーブルですが、これをピボットテーブルような「クロス集計表」も当然できます。ただ、ピボットテーブルじゃないんです。ビジュアルでいう「マトリックス」になるんです。

グラフのビジュアルもインパクト大で重要ですが、このような「数字に表」をまずは自由に扱えること。これが Excel ユーザーが安心して Power BI Desktop や Service を使える前提となるのではないでしょうか。

次回は上述のピボットテーブルっぽい「マトリックス」を取り上げたいと思います。

2015/07/07

Power Query から https 経由で SharePoint の Excel ブックを開く

Power Query (2.23.4035.242 June 2015 Release) で https 経由で SharePoint のドキュメントライブラリに保存されている Excel ブック、および OneDrive for Business にある Excel ブックへのアクセスが可能になっていることを確認しました。(もしかしたら、May 2015 Release からかもしれません、、、、)

Power Query は頻繁に更新されています。数か月前は https 経由で SharePoint や OneDrive for Biz の Excel へのデータ接続はできませんでした。ローカル PC の同期フォルダーを使っているのであれば、同期フォルダー内の Excel ブックにデータ接続可能でした。

今後は同期フォルダーを構成していなくても、https 経由で Excel ブックに接続可能です。(ただし、コンシューマー版の OneDrive へのアクセスは成功していません。([*1] 2022年追記 URLを編集して可能になっています)OneDrive for Business は Office 365 で提供されている OneDrive です。これは SharePoint をベースにしています)

取り込み手順

使い方はいたって簡単です。

[Power Query] タブの [外部データの取り込み] の [ファイルから] にある [Excel から] を選択します。

PQDCFILEEXCEL

[ファイル名] に SharePoint ドキュメント ライブラリーの URL を入れます。

SPDOCLIBURL

この URL は SharePoint のドキュメント ライブラリーであれば、_layouts の前までになります。
OneDrive for Business も同様です。

doclibURL

[開く] ボタンを押すと、SharePoint サイトにある「すべてのサイト コンテンツ」のリストが表示されます。

今回は [ドキュメント] にあるブックを開くので、[ドキュメント] をダブルクリックします。(英語表記は Shared Documents)

allsitecontents

ドキュメント ライブラリにある Excel ブックを選択し、ダブルクリックするか、[開く] ボタンを押します。
すると、Web コンテンツへのアクセス ダイアログが表示されるので、[組織アカウント] を選んで、該当する URL をチェックします。
既定が [匿名] になっているので注意してください。

AccesstoWebContent

組織アカウント(Office 365 の ID)とパスワードでサインインします。

サインインが完了すると、以下のダイアログになるので [接続] をクリックします。

AfterSignIn

ナビゲーター ウィンドウが表示されるので、取り込みたいシートやテーブルを指定します。

PQNavigatorWindows

[編集] ボタンを押せば、クエリ エディタ ウィンドウが表示され、クエリの編集をすることができます。
クエリ エディタ ウィンドウではデータの絞り込みや並べ替え、列の削除や追加、データ型の変換を行い、欲しい形でデータを取り込むことができます。

QueryEditorWindow

[閉じて読み込む] を押せばワークシートにデータが展開されます。特に編集の必要がなければナビゲーター ウィンドウの [読み込む] ボタンでデータの読み込みが可能です。

ImportData

これまで、ファイルサーバー上の Excel ブックへのデータ接続は可能でしたが、https 経由でのデータ接続は少なくとも半年前はできませんでした。これにより、\\サーバー名 でのアクセスと同じように https:// で SharePoint 上にある Excel ブックへの接続が可能になりました。

何がうれしいの?

真っ先に思い浮かべたのが「Excel アンケート」です。

アンケートの共有をしている間は、ローカルの PC/Excel でブックを編集モードで開くことができません。

locked

アンケート集計が溜まってくると、ピボットテーブルを使って分析したくなるのですが、Excel Online ではピボットテーブルをゼロから作ることができません。
こんなときには Power Query を使って、SharePoint にある Excel ブックをクエリで読み込むことでピボットテーブルを作り、データ分析が可能になります。もちろん [データ更新] によって、最新のデータにすることも可能です。

次に使えるのは外部ブックのテーブル オブジェクトへのリンクです。これは SharePoint のドキュメント ライブラリーにある Excel ブックに限らず、ローカル PC やファイルサーバーでも同様です。

ここに、外部ブックの範囲に対して VLOOKUP を使ってデータを参照しているブックがあるとします。範囲の場合は再計算によって「その時の」外部ブックのデータを取り込む(=更新)することが可能です。

このブログで過去に紹介しているように、VLOOKUP や INDEX、MATCH などの「範囲指定」する関数にとって、範囲を「テーブル」にすることで、データの増減に自動的に対応可能になることは、テーブルを使う最大のメリットなのですが、テーブルの場合は外部リンクは使えないのです。このことはマイクロソフトの技術記事でも紹介されています。

Excel テーブル 数式で構造化参照を使う(support.office.com)

ここで「構造化参照を活用するヒント」に以下の記述があります。

“他のブックの Excel テーブルへの外部リンクを含むブックを使用する     ブックに別のブックの Excel テーブルへの外部リンクが含まれている場合は、リンクを含む「リンク先」ブックの #REF! エラーを回避するため、そのリンクされた「リンク元」ブックを開いておく必要があります。リンク先ブックを最初に開くと、#REF! エラーが表示され、その後リンク元ブックを開くと、エラーは解決します。リンク元ブックを最初に開くと、エラー コードは表示されません。” (引用おわり)

つまり、リンク先ブックを開いておかなければ、別のブックのテーブルへリンクしている数式は #REF! エラーになります。

これを回避するために、リンクを使わず、Power Query を使うことで #REF! エラーを回避しつつ、データ更新によって最新データを参照することが可能になります。

この機能拡張によって、Office 365 の SharePoint や OneDrive for Business を Excel の保存先として、従来のファイルサーバーのように使うことが可能になりました。

 

毎月にようにリリースされる新しい Power Query については、英語ですが Office Blogs で新リリースごとに紹介されています。

https://blogs.office.com/


[*1] OneDrive パーソナル (onederive.live.com) の Excel ファイルに接続する方法
https://road2cloudoffice.blogspot.com/2022/04/power-query-onedrive-onederivelivecom.html

2014/12/19

Excel ユーザーのための Power Query

Excel 2007 以降、機能強化面で明らかに重点施策となっているのが「外部データの取り込み」である。[データ] タブの [外部データの取り込み] により、さまざまなデータソースからデータを取り込むことが可能になった。


しかし、マイクロソフトの SQL Server を導入していなければそれほど気にする Excel ユーザーはいないと思われる。使うとしても Access データベースが多かったのではないだろうか。(Web クエリも使えそうに思うのだが、それほど活用できるシーンは多くないのが実状だろう)

クラウド サービスが台頭するに従い、参照するデータが社内のサーバー(これを最近はクラウドと対比して オンプレミス と呼ぶ)だけではなくなり、また、そのデータ接続の形態も多様になってきた。

そのような流れのなかで Power Query と呼ばれる Excel アドオンがマイクロソフトのダウンロードセンターから無料で利用可能になった。注意点としては、システム要件で Excel のエディションは Professional Plus, 365 Pro Plus の企業向けエディションに限られ、Home and Business / Solo などの個人向け Excel にはインストールすることはできない。また、インストールできたとしても、Professional Plus, Pro Plus 以外ではネット上に公開されているデータのみ参照といった制限が加えられる。

この Power Query は PowerPivot を含む Power BI と呼ばれるサービスブランドの主力製品の1つであり、これまでリボンの [データ] タブにあった [外部データの取り込み] を完全に置き換えるものである。

ところが、このブログの Office 365 SharePoint リストとの連携などで、Power Query を一度も使っていない。 Power Query を使わなくても SharePoint リストをテーブルとして Excel に取り込むことはできる。現在のところ、このあたりの機能は「移行期」であり、同様の結果をもたらす機能がいくつかあるが、明らかにマイクロソフトは Power BI を軸にして、Excel をデータ分析のツールとし、クラウドでも重要なポジションとなるように拡張している。

では、クラウド以外では Power Query は使えないのか?というとそうではない。
あえて今回の投稿のタイトルを「Excel ユーザーのための」としたのは、クラウドを使っていない環境でも Power Query の活用シーンが多いからである。

CSV データの取り込み

従来の 「テキスト ファイル ウィザード」(データ タブのテキスト ファイル)を使って CSV データを Excel に取り込んでいるユーザーも多いだろう。CSV データ ファイルはマイクロソフトが Excel に関連付けしているためダブルクリックでも取り込むことができるが、鉄板ネタの「001 が 1 になる」「1-1 が1月1日になる」といったユーザーが期待しない変換をする。このため、このウィザードは必須であった。


Power Query の CSV 取り込みでは、上記のウィザードでできることはもちろん、様々な強化がされている。

取り込み条件を設定するクエリ エディターのホーム画面

Power Query は単純にデータを取り込むだけでない。取り込む「列」の指定や列の順番の変更を[ホーム] タブの [列の管理] で指定できる。取り込む行数の削減や並べ替え、さらには列内の文字を置換したり、区切り文字を指定して列の分割も可能だ。また、[カスタム列の追加] も可能で、その列には数式により、他の列を参照したり、Power Query 関数を使って計算が可能だ。

以前 PowerPivot で紹介した DAX 関数とは表記方法が違う。PowerPivot の DAX 関数は Excel のワークシート関数に非常に近かったが、Power Query 関数はワークシート関数とは表記法が違うので戸惑うこともあるだろう。しかし、このようにデータ取り込み時に計算までしてしまえば、取り込んだあとのワークシートがシンプルになるのはメリットと言える。

Excel データの取り込み

さらに、ローカル PC やファイルサーバー上にある Excel ブックからデータを取り出すこともできる。それも、そのブックを Excel で開くことなしに取り込むことができるのだ。

また、ブックに複数のワークシート、そしてテーブルがある場合は、それらを判断してナビゲーション ウィンドウで選択することができる。


取り込みたいデータを選択すれば、上述の CSV で行った加工が同様に可能である。
しかし、これだけだと Power Query を使って Excel のデータを取り込むメリットが実務面ではわからないだろう。

Power Query は「クエリ」という単位で取り込む条件を記憶する。データ取り込み先の情報にはじまり、クエリ エディタで設定した条件などを保持することができる。

そのクエリを使って、さらにデータの加工が可能なのだが、特筆すべきはクエリによる結果データ(テーブル)の「追加」と「マージ」ができることだろう。


クエリによるデータ(テーブル)の追加 (Append)

実務では同じ列の表(データ)を追加するという業務も少なくない。
そのような場合、手作業で範囲をコピーして、コピー先にペーストするか、自動化するために VBA を使うなどが考えらえる。

このデータ追加の作業も Power Query を使うことで可能だ。

蓄積している表(またはテーブル)を取り込むクエリと、追加するデータを含む表(またはテーブル)を取り込むクエリを作成し、双方のクエリを「追加」結合させることで、双方のテーブルを結合した新しいテーブルを作ることができる。データベースの世界ではユニオンと呼ばれる機能である。

たとえば、過去のデータは Excel のブックのワークシートに保存されており、今期のデータは CSV や Excel ワークシートとして更新されているようなケースでは、過去のデータのクエリと、現在進行中のデータのクエリを「追加」結合させることができる。もし、列順が違う、今期から列名に修正が入った、、、などの事態が発生した場合は、クエリ エディターを使って追加結合できるように修正すればよい。

そして、この方法の最大のメリットは、一度作ってしまえば、そのクエリは再利用が可能なことである。もちろん、実務では参照先のファイル名が変わるケースもあるだろうが、もし、上書きでファイルが更新されるような場合は「データ更新」するだけで最新のデータを参照して結合することができるのだ。

結合できるクエリの数には上限はない。(扱うデータによってメモリの上限はあるはずだが。)
2つのクエリを結合するクエリは既定で「Append1」のような名前のクエリになる。さらに結合させたいクエリがあれば、この Append1 にそのクエリを使って追加結合させる。これを繰り返すことで3つ以上のクエリを結合させることができる。

CustmerList クエリと CustmerList1 クエリを追加結合する Append1 クエリ

クエリによるデータのマージ

かたや、マージは Excel 2013 以降に追加されたリレーションシップ、もしくは PowerPivot のリレーションと同じことができる。


さらに、PowerPivot で行った RELATED 関数を使わずに参照先の欲しい列を挿入することができる。


一般的には一度ワークシートに取り込んでから加工をするのがわかりやすいが、件数が多いときなどは、上記の追加結合やマージ結合を含むデータの加工処理のためのクエリ作成で、ワークシートに参照先の全データを取り込む必要がない。

表・テーブルの読み込み先の指定の「データを表示する方法」で「接続の作成のみ」を選択して、クエリを作ることで、全データを読み込むこと無しに、そのクエリを使って加工、追加結合、マージ結合が可能になり、そのクエリ結果だけをワークシートに書き出すことが可能だ。


そして、この操作をする上で PowerPivot のように「データモデル」に追加する必要がないのも、Excel のピボットテーブル ユーザーにとってはうれしいことだろう。

「機能」への拡張

Excel は「機能」、「関数」、「VBA」の3要素から成り立っている、というのは実践ワークシート協会 代表理事 田中 亨の主張であるが、その中でもとりわけ最近のマイクロソフトは「機能」面における拡張を推し進めている。確かに、新しいバージョンの Excel でできることは昔の Excel とそれほど差がないかもしれない。上述のようなデータの操作も、もし、VBA に精通しているユーザーが多くいれば、わざわざ新機能を使って同じことをする必要はない。

しかし、現実は、そのように VBA を使いこなせるユーザーが多いわけではない。ワークシート関数はブックのメンテナンスという観点からみると VBA 以上にやっかいなものであることを多くのユーザーが気づいていない。複雑なワークシート関数を使ったブックにはコード(数式)の一覧性がなく、そのワークシートを作った本人ですらメンテナンスができるかどうかあやしいのだ。

その状況を顧みれば、いままで VBA でやっていたこと、複雑なワークシート関数を駆使して実施していたことを「機能」だけで実現できるのは「組織にとって」大きなメリットであり、マイクロソフトはそちらのほうに向かってユーザーの利便性を高めようとしている。

そう理解して新機能、新バージョンと接することが、本当の意味で業務の効率化や、効果的な Office の活用ができると考えている。

OneDrive/SharePoint ドキュメント ライブラリーは使えない

[追記:2015年6月版 2.23.4035.242 で HTTPS 経由でのアクセスが可能になりました]

と、いつものパターンの落とし穴だが、最後にできないことを紹介しておく。

Power Query でローカルPCや LAN 上のファイルサーバーにある Excel ブックからデータを取りだすことを紹介したが、残念ながら現在の Power Query のバージョン(2014年11月版 2.17.3850.242)では https 経由で OneDrive、OneDrive for Business、さらに SharePoint のドキュメント ライブラリーにある Excel ブックからデータを取り出すことができない。

ただ、同期ツールを使ってローカル PC のエクスプローラーにある OneDrive / OneDrive for Business フォルダーから Excel ブックを利用することは可能だ。現在、OneDrive は無制限になっているのでオフライン同期するフォルダー選択には注意が必要だ。

Power Query そのものは2~3か月に1度に更新されるような頻度であり、どんどん機能拡張・追加されてきた。OneDrive や SharePoint ドキュメント ライブラリー内の Excel ブックにアクセスできる機能拡張の早急な実装を期待したいところだ。これが可能になると Excel 中心で実務を動かすユーザーにとってはさらに Office 365 の利用シーンが広がるだろう。


[参照]

(英語) Power Query formula categories (Power Query で利用できる関数一覧)
https://support.office.com/en-us/article/Power-Query-formula-categories-125024ec-873c-47b9-bdfd-b437f8716819

Office Online - Microsoft Power Query の概要
https://support.office.com/ja-jp/article/Microsoft-Power-Query-for-Excel-%E3%81%AE%E6%A6%82%E8%A6%81-6e92e2f4-2079-4e1f-bad5-89f6269cd605

Powered by Blogger.

自己紹介

自分の写真
1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。