ラベル Power Query Formula Language の投稿を表示しています。 すべての投稿を表示
ラベル Power Query Formula Language の投稿を表示しています。 すべての投稿を表示

2017/07/08

[Power BI / Excel] 複数にまたがる Web ページからデータを取得する

Excel や Power BI Desktop のデータ取得の機能である Power Query (データの取得と変換) の話題です。

地震データを取得する

最近、また地震が多いのが気になりますよね。地震データは気象庁のホームページで随時公開されています。しかしながら、この公開データは、良い意味でデータ クレンジングのサンプルになり、違う意味では「集計」や「レポート作成」などの後工程をあまり考慮していないデータかもしれない、と愕然とします。
今回のお題とは離れた話題なのですが、ちょっとだけご紹介します。

http://www.jma.go.jp/jp/quake/quake_local_index.html

すべての数字が「全角」です。大きい、小さいの判断をするためには数値にしないと比較できないので、まずはこれを半角に変換する必要があります。同じく日付に使われている数字も全角です。良いか悪か別にして、Excel は全角数字をセルに入力すると、自動的に全角数字を半角の数字に変換してくれます。また、関数も用意されていて、ASC関数が全角のアルファベット、数字を半角に変えてくれます。(反対は JSC関数)

残念ながら Power Query エディターには全角→半角にしてくれる関数はありません。自分でカスタム関数を作って対応します。やることはものすごくベタで、全角のAは半角の A に、全角の1は半角の 1 に、というようにすべてを羅列するようなものです。

一方、Yahoo さんの地震情報は、数字は半角になっています。元ネタは気象庁のデータを使っていると思うので、後工程・再利用を考えて変換されているのでしょう。

Yahoo! JAPAN 天気・災害 地震情報
https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/


全角・半角変換の手間を考えると Yahooさんのページからデータを取得したいところですが、地震の回数が多くなる、ちょっと長い期間でみてみたい、となると最初の1ページのデータだけでは足りなくなります。

Yahooさんのこの情報ぺージは、1ページから300ページまであり、かなり前の情報も Web ページから取得することが可能です。


300ページ目を開くと、今だと 2004年の2月後半からデータを取得することができます。1ページあたりに100件のデータをテーブル内で表示してくれます。
URL は以下です。

https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/?sort=1&key=1&b=101

?から後ろがページを指定するパラメーターですが、一番最後のパラメーターの b=101 が、このページで表示する「開始番号」の扱いです。なので

1ページ目 b=1
2ページ目 b=101
3ページ目 b=201
4ページ目 b=301
・・・・・
10ページ目 b=901

といったルールになっていることがわかります。

複数の Web ページからデータを取得する

Power Query で最新100件(=1ページ目)を超える過去のデータを取得したい場合は、2ページ目、3ページ目、、、と複数のページ上のデータを取得する必要があります。

毎回、たとえば3ページ分のデータを取得して分析しよう、とした場合、すぐに思いつくのは URL 固定で 3 個のクエリを作成し、そのクエリを Append (追加) する方法でしょうか。


https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/?sort=1&key=1&b=1
https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/?sort=1&key=1&b=101
https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/?sort=1&key=1&b=201

この3つのWebページのクエリ結果のテーブルを追加(Append)する方法です。

これでもいいんですが、URL固定、数固定にできない場合などを考慮すると、違う方法も覚えておくと便利です。それが「カスタム関数」を使う方法です。上記の URL であれば、b=1 や b=101 の部分の数値を変数、引数として扱い、結果をもらう、という方法です。

Excel / Power BI Desktop で「繰り返しの処理」のような方法でデータをとりたいな、と感じたときは、上述のように変数と関数を使うことを検討してみます。

データの読み込み処理を関数にする

Excel でも Power BI Desktop でも方法と手順は同じです。Excel の画面で手順を追ってみましょう。Excel 2016 のデータ タブにある「取得と変換」または「データの取得と変換」を使います。繰り返しになりますが、取得と変換はこれまでの外部データの取り込みに代わる新しい機能で Power Query と呼ばれていたものであり、Power BI Desktop のデータの取り込み・変換の機能(ETL機能)と同じものです。製品の更新タイミングによって若干の表現の差がありますが、ほぼ同じ位置や言い回しなので、脳内補完してください。あえて画面は少し前の Excel のスナップショットです。

データ タブの「(データの)取得と変換」と「新しいクエリ」や「データの取得」などのメニューから「Webから」を選びます。


データを取得する Web ページの URL を入れるダイアログが表示されます。
Yahoo!さんの地震情報ページの 1 行目からを表示する URL を入れて [OK] を押します。

https://typhoon.yahoo.co.jp/weather/jp/earthquake/list/?sort=1&key=1&b=1


今回は、Yahoo! さんの一般向けのページなので [匿名] のまま [接続] を押します。


指定したページにあるデータ情報からどのデータを取得するか指定する「ナビゲーターウィンドウ」が表示されます。テーブル形式でデータがまとまっている [Table 0] を選んで
[編集] を押します。[読み込み] を押すと、このまま取り込んでしまうので、いったん [編集] を押し、クエリ エディターにデータを読み込んで、変換・編集作業をします。


クエリ エディターが立ち上がります。取り込んだデータをもとにして、データの型が最初から列の属性として設定されています。気象庁のデータと違って、元データの数字が半角になっていること、マグニチュードの”M”が無いこと、などでマグニチュードは数値データとして、情報発表時刻は日付データとして認識されています。発生時刻が「ABC」の文字になっているのは 2017年7月8日 15時42分 ごろ という「ごろ」がデータに含まれているからです。最大震度が同じく「ABC」の文字になっているのは、半角数字の後に「弱」や「強」の文字がついているものがあったからです。


今回は発生時刻の「ごろ」や最大震度のお「強・弱」を扱う「データ クレンジング」処理は割愛しますが、このクエリ エディターでクレンジング処理をすると、クエリ エディターで「ステップ」として記録され、再利用することができます。

なお、マグニチュードでも文字列が入るデータがあるため、クレンジングの作業は必要です。

このクエリ エディタは基本 GUI で操作しますが、それらの操作手順は VBA のマクロ記録のように Power Query の M 言語で記録されます。M 言語で記述されたソースを編集するために詳細エディターを立ち上げます。[ホーム] タブの [クエリ] グループの [詳細エディター] をクリックしてください。詳細エディターを立ち上げるコマンドは他にも多く配置されています。


詳細エディターが立ち上がりました。詳細といっても、機能的には「簡易」です。
何度かお伝えしていますが、現段階で M 言語を深く習得し、詳細エディターでガリガリと操作を記述するような使い方をマイクロソフトは想定していないと思います。このエディターには本当に最低限の機能しかありません。そういうものだ、と思ってあまり深堀りしないほうがいいと感じています。

この簡易エディターで「引数」の指定をします。let の上に (page as number) => を挿入します。page という変数で、数値(number)型を引数として指定します、という意味です。


これで、page という変数(数値)が let 以下で使えるようになりました。これで 1 から始まる、101 から始まる、201 から始まる、という指定が可能になります。
URL の一番最後の値として置き換えたいのですが、注意点は page は「数値」であり、URL は「文字」であること。よって、数値を文字に変換してあげます。

Number.ToText(page)

この関数で変数 page の中の数値データが、文字のデータに代わります。URL の最後の b=1 の部分を以下のように書き換えます。

[変更前] /?sort=1&key=1&b=1")),
[変更後] /?sort=1&key=1&b="& Number.ToText(page))),


ウィンドウの右下の [完了] を押すと、エラーがなければ、パラメーターの入力を促す画面が表示されます。


画面左のナビゲーションの [クエリ] の上にある [>] 展開マークを押すと、このクエリ エディターで扱えるクエリが表示されます。(Excel の場合は、ブックに含まれるクエリであり、Power BI Desktop の場合は pbix ファイルに含まれるクエリを含みます)


引数(パラメーター)を準備する

ナビゲーションの Table 0 の前に [fx] アイコンからわかるように、この引数を設定する操作によって、Tablel 0 クエリは関数に代わりました。page パラメータに 1 を入れて [呼び出し] を押すと、1 からのデータの表を関数の「クエリの結果として」表示します。101 をいれると、101 からのデータの結果を表示してくれます。このクエリの結果はナビゲーションから削除することができます。削除するまでの操作手順のアニメーション GIF が以下です。


パラメータに、1、101、と入力し関数 Table 0 に渡し、その結果を表にすることができました。この 1、101、、、を手入力ではなくしたいのです。これが Power Query の繰り返しの処理です。

たとえば、常に10ページ分がほしいのであれば、1、101、201、、、901 までパラメータとして渡します。そのため、そのパラメータをリストとして用意します。

手順は、10個の連続した数値を用意して、1から901を作ります。いろいろなやり方があると思いますが、0 から 9 までの連続した数値から以下のように作ってみます。

0 -> 0*100+1 = 1
1 -> 1*100+1 = 101
2 -> 2*100+1 = 201
・・・
8 -> 8*100+1 = 801
9 -> 9*100+1 = 901

クエリ エディターで 0 から 9 までの連続した数値を作る方法は、数式で ={0..9} を使います。この数式の結果は {0,1,2,3,4,5,6,7,8,9} の連続した数値のリストを作成します。

クエリ エディターで、このリストをテーブルに変換して、新しい列を追加して、0*100+1 の数式を使って 1 から 901 までの数字を作ります。そこまでは以下のアニメーションGIFです。


パラメーターを使って関数を利用する

この操作で関数へ渡すパラメーターが用意できたので、このパラメーター列の横に新しく列を追加し、そこに作成した関数 Table 0 を指定して、1列目にある数値をパラメーターとして指定します。
関数 Table 0 はパラメーターで指定されたデータから始まる「表」をクエリの結果として返してくれます。個々の [Table] のリンクをクリックすると、1ページ100件分のデータのみですが、列名の横にある [展開] ボタンを押すと、すべての結果の表(テーブル)を結合して一気にデータ 10ページ 1000件を作成します。


0~9のパラメーターの最大値の 9 をさらにパラメーター化したり、多めの引数を用意して、取り込んだ後でエラー行の削除を行う、クレンジングをする、という方法を組み合わせることができます。

まとめ

今回は複数の Web ページのデータをまとめる、というお題でしたが、ポイントは「関数化」と「パラメーターの準備」による「繰り返し処理」と「クエリ結果の追加統合」の処理だと言えます。この方法を知っていると、Web ページだけではなく、他のところでも応用が利くテクニックです。

以上、少しでも参考になれば幸いです。

2017/03/03

[Power Query] 大量のデータベースから、セルに指定した条件でデータを取り出したい

Power Query/Excel の勉強会でお付き合いのある方から以下のような質問をいただきました。

PowerQueryの機能には、MSクエリで可能だったセルの値を使ったパラメータークエリのような機能はないのでしょうか?大量のデータベースから、セルに指定した条件でデータが取り出せて便利だったのですが。
昨年の春頃に、Power BI Desktop および Excel Power Query - 取得と変換 で、「パラメーター」の機能が実装されました。このパラメーターを使えば、設定した値(文字や数値、日付など)の中から選択して、データ抽出の条件として使えることはわかっていました。

Deep Dive into Query Parameters and Power BI Templates
https://powerbi.microsoft.com/ja-jp/blog/deep-dive-into-query-parameters-and-power-bi-templates/

期待している Excel 利用のシナリオは、取り込みたい条件を Excel のセルで指定、たとえば、入力規則で設定したドロップダウン リストから選択などで行い、その指定した条件で元のテーブルからレコードを絞り込んでワークシートに展開する、というような使い方だと思います。

パラメーターを使って絞り込み条件を変更する

Power BI Desktop であれば、新機能の「パラメーター」を使い、 A, B, C, D などのリストで作ったパラメーターで、リストから選んだ条件で絞り込みを行い、データ モデルに結果を Load します。

等しい条件にパラメーターを指定する
この条件を変えたければ、Power BI Desktop の [ホーム] タブ - [外部データ] の [クエリを編集] から [パラメーターを編集] を選び、表示されるパラメーターの入力 ダイアログボックスで、条件(パラメーター)を変更できます。[変更の適用] を行えば、変更した条件で元のデータセットからデータを読み込み、データ モデルを更新します。
[クエリを編集] - [パラメーターの編集] を選択
[パラメーターの編集] で表示される パラメーターの入力 ダイアログ
パラメーター変更後に表示される警告
Power BI Desktop の場合、このようにクエリ エディター ウィンドウを再度開くことなくパラメーターの変更が可能です。この使い勝手は想定通りだと思います。

ところが、Excel Power Query - 取得と変換 では、同様の行の絞り込み条件とパラメーター設定をしても、Excel のリボンから [パラメーターの編集] に相当するコマンドを見つけることができず、同じ操作手順を得ることができませんでした。(使用更新チャンネルは 最新機能更新チャンネル バージョン 1611 ビルド 7571.2109)

もちろん、クエリ エディターを開けば、パラメーターを変更でき、その変更したクエリを適用・保存することで、結果のテーブルの更新ができますが、想定しているシナリオの手順ではないと思います。

条件を「引数」として渡す、それは関数化

では、リボンに [パラメーターの編集] コマンドがない間はどうすればいいか。

クエリに引数で「条件として使う値」を渡せば解決できます。事実、パラメーター管理 (Query Parameters) 実装の前は、引数と関数の組み合わせで対応していたんですよね。

サンプルとして、条件の設定は「入力規則」を設定したセルにしました。といっても、見出しとデータ部分が1行で構成したテーブルとします。

大量データのテーブルから、絞り込み条件を付けたクエリを作成します。この場合の条件は、テーブルの列のフィルター オプションで、まずは明示的に A や B を指定してます。
次に詳細エディターを使って、let の直前に、引数 param1 を使う宣言をします。

(param1 as text) =>
let
 ・・・・・
in

そして、この引数名 param1 を使って、先ほど明示的に指定したステップの条件の値(入力規則で指定し、条件として選択している A や B や C)を入れ替えます。
以下の例だと、ステップは「フィルターされた行 =」であり、絞り込み条件の列として使用している [区分A] に定数として指定されている "A" や "B" などを param1 に置換えます。



この追加・修正を行い、詳細エディターを閉じると以下のダイアログが表示されます。


クエリ ウィンドウ(昔はナビゲーター ウィンドウと呼んでいました)の [>] をクリックしてウィンドウを展開すると、データを絞り込むために作成したクエリーの種類は「関数」になっていることがわかります。(Table01 クエリの前のアイコンが [fx] になっています)


すでにこのクエリは「関数」になっています。この関数クエリに引数として条件の値を渡せばいいのです。

このクエリ ウィンドウは [閉じて読み込む] ことによって、ワークシートには何もロードされない [接続専用] のクエリがブックに保存されます。(パラメーターの入力ボックスに絞り込み条件を指定すれば、その条件で絞り込んだテーブルがワークシートにロードされます)

この関数クエリを使うクエリの書き方は色々な方法がありますが、条件指定の1行データ入力規則のテーブル(列名は[条件]、データは1行)から作るクエリ作成手順を紹介したいと思います。

(1) 条件指定の1行データテーブル内にアクティブカーソルを移動して、[取得と変換] の [テーブルから] を選んで、アクティブカーソルがあるテーブルからクエリの作成を行うクエリ エディターを起動します。
クエリ ウィンドウを展開すると、直前に作成した関数クエリと、いま編集しているクエリの2つが表示されます。(以下のサンプルでは Table01 と pTable1)


(2) [列の追加]タブの [全般] - [カスタム関数の呼び出し] をクリックします。これでカスタム関数を使った列の追加をするためのダイアログ ウィンドウが表示されます。


関数クエリのドロップダウン リストで直前に作成した関数クエリを選択し、引数の param1 には、[条件](これは、1行データテーブルの「列名」として指定した文字です)を指定して、[OK] をクリックします。


関数クエリを使った新しい列 [Table01] が追加されました。


(3) 新しく追加された Table01 の結果が欲しいので、[条件] 列を削除し、[Table01] の「Table」を展開ボタンを使って展開します。元の列名は使用しないのでプレフィックスのチェックを外し、[OK] をクリックします。


この例では列の順序が元のテーブルとは変わってしまいましたが、[区分A] の値で絞り込まれたテーブルのプレビューが表示されます。


 [閉じて読み込む] でクエリの結果をワークシートにロードします。


(4) 条件を変えて、クエリを実行して、テーブルの更新をします。
まず、条件設定のテーブルで他の値を選びます。サンプルでは "D" を選びました。


(5) 次に関数クエリの結果でワークシートにロードされたテーブル上で、右クリックメニューから [更新] をクリックすると、テーブルが指定した条件で絞り込まれたものに更新されます。


いかがでしょう。たぶん、このようなシナリオを想定しているのではないでしょうか。

まとめ

パラメーター(Query Parameters)を使って、ダイナミックに変数、条件を変え、クエリ―結果も変えることができます。
クエリを関数にして、関数の引数を動的に変更することで、パラメーターの利用と同じことが可能です。

ただ、もしメモリー上に余裕があれば、データセットに対してフィルターをかける「取得と変換」や「Power Query」の処理は、データ分析用のデータ準備として最低限にしておいていいと思います。
ある条件で絞り込んだ、生の「テーブル(表)」がワークシート上で必要、というケースは、データ件数が多くなればなるほど非現実的ですよね。(印刷のため・・・は知っています。その昔、連続帳票で何千件のレコードを印刷、、、を経験したことがありますが(笑)。)

どうしても Excel の発想から、テーブルや表に対してオートフィルターで条件を指定して絞り込みを行い、そこから何かしらの処理を行う、という手順を考えてしまいます。
もちろんその手順に問題はないのですが、フィルターをかけて計算をする、という「一括りの処理」は、分析フェーズの DAX の FILTER関数などを使い、数式内で行うのが柔軟な利用方法だと感じています。

最大100万行のワークシートをデータセットの前提としていた旧来の Excel 利用の考え方とは別に、これからは、SSAS(SQL Server Analysis Services) のインメモリ表形式モデルの「データ モデル」を Excel に実装した Power BI 系のモダン Excel では、データ モデルにできるだけ「必要なデータ」を「必要な形に変換」して「ロード」する(Power Query - 取得と変換 - ETL機能としての処理)のが基本だと感じています。そのため SQL Server 2012 以降の xVelocity の最適化の圧縮技術を惜しみなく適用しているような気がしています。

(独り言・・・でも、そのモダンな使い方をすると Power BI Desktop をすぐに使えるよう(それで十分)になるんですよね・・・)

2017/02/19

M言語 Power Query Formula Language

先日、Power BI 勉強会#3 で「M言語 Power Query Formula Languageとは?」というお話をする時間をいただきました。
冒頭「今回初めて参加された方はどのくらいいらっしゃいますか?」と伺ったところ、結構な方が初めての参加で、これから Power BI を勉強しよう、という人が多かったので、スライドなしで、Power BI の概要を前半の時間を使ってご紹介しました。
よって当初予定の用意したスライドをかなりの速足でご紹介してしまい、大変申し訳ないと感じています。

勉強会スライド 
https://doc.co/UY3RDb

昨日お伝えしたかった内容を再度まとめておきたいと思います。

データを取得し、準備するETL機能とクエリ エディター

Power BIは、Power BI Desktop や Power BI サービス(Web)などのアプリケーションやサービスを総称した名称ですが、Excel にも Power BI アドインというものがあり、その中でも Power Query は Excel 2013 ではアドインとして、Excel 2016 では標準機能の「取得と変換」となって利用可能になっています。
この Power Query の機能はいわゆる ETL(Extract, Transform, Load)機能と呼ばれる、データを抽出し、分析しやすいよう変換し、保存する、という役割を受け持つもので、Power BI Desktop もほぼ同じ機能を持っています。

その機能を実現するのが「クエリ エディター」です。


クエリ エディターは、Power BI Desktop および Excel の Power Query アドインまたはExcel 2016 取得と変換で共通の見た目、操作性を持つウィンドウとして起動します。

マクロ記録のようにクエリ エディターの操作を記録

このクエリ エディターは、そこで行われた1つ1つの操作をクエリの設定ウィンドウの [適用したステップ] として記録していきます。そのときの操作内容を記録する言語が M 言語と呼ばれたり、Power Query Formula Language と呼ばれます。
記録されているステップ名を選択すると、プレビューグリッドにはその操作の結果が表示され、プレビューグリッド上部の数式バーに M言語で記述された数式が表示されます。


操作手順を記録しているので、いまやった操作を「取り消したい」場合は、適用したステップに表示されているステップを削除すると、前の状態に戻ることができます。

M言語の特徴

クエリ エディターで利用する(記録される)M言語には、ある特徴があります。クエリ エディターでは、プレビューグリッドに表示された表やテーブルの操作が記録されるため、記録される M言語の関数は「テーブル」を扱ったものになります。
M言語による数式は、Power Query 関数 (もしくは M言語関数)を使いますが、その関数の表記は以下が基本形です。

クラス.関数(参照するステップ (, その他の引数))

参照するステップの多くは「直前の」ステップになります。クエリ エディターの操作は表を対象することが多いため、クラスの部分が Table の関数が多く使われます。

数式バーはステップ1つの数式のみ確認できますが、[詳細エディター] を使うことで、記録されているすべてのステップの数式の確認が可能です。行の絞り込みや、列の削除や追加の操作は、Table.○○○という関数が使われています。


Tableに関連する関数のパラメーターとして、日付に関する関数や、文字に関する関数などが使われます。Excel のワークシート関数の数式と同じように、関数のパラメーターとして他の操作を行う関数を組み合わせることができます。

たとえば、以下の数式は、フィルターされた行、というステップ名(および変数名)で、Table.SelectRows という関数を使って、行の絞り込みをします。絞り込みの対象は、直前のステップの[変更された型]というステップの結果のテーブルで、条件は、[日付]列の各行の日付データが Date.IsInCurrentYear 関数を使って「今年」であるものを絞り込んでいます。

フィルターされた行 = Table.SelectRows(変更された型, each Date.IsInCurrentYear([日付])),

詳細エディターで確認できるクエリは、複数の操作ステップを let ~ in で括って、in の直後に最終ステップ名(変数)を記述します。そのステップの結果がプレビューグリッドに表示されます。

詳細エディターとM言語を使ってゼロから記述するのか?

結論から言えば、それはハードルが高く、難しいです。
現時点で詳細エディターは、開発環境としての機能は皆無です。インテリセンスのような入力支援もなく、ヘルプ機能や、エラーチェックもないに等しい状態です。
苦労して動くものを作ったとしても、業務内における引継ぎを考えるとお勧めできるものではありません。

現状は、クエリ エディターで行った操作の記録として再利用し、修正が必要であれば最小にとどめることが肝要だと感じています。

ただし、カスタム関数と呼ばれるクエリを使うと便利な場合が出てきます。その作成では詳細エディターでM言語を使わざるを得ません。

カスタム関数を作る

関数なので、引数を宣言します。記述方法は let ~ in の直前に引数を (param1 as text)=> のような記述で設定します。文字列の引数を param1 という名前で定義して、let ~ in の中の数式に渡します。このように引数を設定したクエリは「クエリ関数」になり、他のクエリから参照することができます。


まとめ

空のクエリからM言語を使ってゼロからクエリを記述する、、、というクエリの活用はハードルが高く、エディターの支援機能などを見ても、まだ万人向けとは言えません。多くの操作はクエリ エディターのリボン コマンドから可能で、毎月のアップデートで機能追加されています。
また、この後工程での「分析」のフェーズでも、データの「整理」が可能です。特に「日付」に関しては、クエリ エディターでやるべきか、分析のフェーズで DAX のタイムインテリジェンス関数やカレンダーテーブルですべきか、といった判断が必要になるケースもあります。
データを収集し、分析し、レポートする、という Power BI の一連の流れの中で、機能的にできることを把握し、適切な場面で、適切な機能を使えるようになりたいですね。

以上、昨日お伝えしたかったポイントをまとめてみました。
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を返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。