その他お問い合わせ先

lodestar@truestar.co.jp

運営会社

株式会社truestar
truestar activation株式会社

細分化されたAlteryxワークフローを一度に回してくれるRunnerマクロを使ってみた #Alteryx #20 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第六弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

20日目のエントリとして細分化されたAlteryxワークフローを一度に回してくれるRunnerマクロを使ってみたいと思います。

14日目と16日目のエントリにて、調査データをAlteryxで加工してみましたが、調査データをAlteryxで加工すると時に、たとえば、特定質問でYesと答えた回答者で回答率を算出したり、移動平均を算出したりするという加工を入れると、Alteryxワークフローが非常に大きくなってしまうことがあります。

そうなってしまうと、たとえばロジックの改修を行う際に、毎回大きなワークフローを回す必要が出たり、またエラーが出た際に原因を特定するために、大きなワークフローを回す必要が出たりと、ワークフローが回るまでの待機時間が長くなってしまいます。

また、複雑な集計処理をしていなくても、データ量が膨大な場合、ワークフローが完全に回ってからでないと加工状況が見えないため、集計処理が正しいかを確認しようとするたびに、ワークフローを回すことになり、ワークフローが回るまでの待機時間が長くなってしまいます。

上記のような状況の場合、ワークフローを細分化するとワークフローが回るまでの待機時間が短縮されます。

しかし、定期運用をする必要があるデータの場合、毎回細分化されたワークフローをすべて回す必要があるため、更新に時間を費やしてしまうことになります。

これを解決するのが、今回紹介しますRunnerというツールとなります。

このツールは、Alteryxにデフォルトで入ってるツールではなく、Alteryxの社員であるAdam Rileyさんが任意で作成したマクロとなります。

※Alteryxユーザーであれば、任意でマクロを作って、それをネット上で共有することができます。

以下でAdam Rileyさん作成したマクロのパッケージを一括ダウンロードできます。

Adam Rileyさんマクロパッケージ

 

実際にRunnerを使ってみようかと思います。

まずは細分化した2つのAlteryxを用意しました。

1つ目はAlteryxで調査データをTableau用データに加工してみた-Part 1で使ったワークフローです。

2つ目はAlteryxで調査データをTableau用データに加工してみた-Part 2 #Alteryx #16 | Alteryx Advent Calendar 2016で使ったワークフローにさらに加工を加えたものです。

次に、Runnerを使って、Alteryxワークフローを作成します。

Runnerで1つ目のワークフローを指定して、Conditional Runnerで2つ目のワークフローを指定します。

Conditional Runnerは何個もつなぐことができるので、細分化さらたワークフローがいくつあっても問題ありません。

続きを読む 細分化されたAlteryxワークフローを一度に回してくれるRunnerマクロを使ってみた #Alteryx #20 | Alteryx Advent Calendar 2016

Alteryxで調査データをTableau用データに加工してみた-Part 2 #Alteryx #16 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第五弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

16日目のエントリとして14日目のエントリのPart 2として、大量の調査データをAlteryxでTableau用データに加工してみたいと思います。

ちなみに14日目のPart 1エントリは以下です。

 

様々な国の調査データを比較したかったり、調査データをトラッキングしたいとなると大量の調査データを取り扱うことになります。

Part 1の形のデータベースとなると、データ粒度が回答者IDごとであり、尚且つTableau上では、表計算で回答率を算出するため、データが大きいとTableauのスピードが著しく悪くなります。

そのため、以下のAlteryxワークフローで大量の調査データにも対応できるTableau用データベースを作成してみました。

 

以下でPart 2で追加したツールの詳細を説明します。

 

このSummarizeを入れるだけで、25003行だったデータが、9008行まで収縮できました。約40%の収縮です。

完成したデータはこれです。

 

明日17日目はクラスメソッドさんの『Communityの使い方 』です。乞うご期待!

Kazuki Koebisawa

続きを読む Alteryxで調査データをTableau用データに加工してみた-Part 2 #Alteryx #16 | Alteryx Advent Calendar 2016

Alteryxで調査データをTableau用データに加工してみた-Part 1 #Alteryx #14 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第四弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

14日目のエントリとしてクラスメソッドの川崎さんが以下のエントリでもご説明してくださっていますが、調査データをAlteryxで実際に加工してみようかと思います。

Tableau Conference 2016 at Austin [レポート]調査データを可視化する 2.0 – Data Revelations #data16

 

活用するデータは以下になります。

まずは、数値形式で格納されているデータです。

 

次に、文字形式で格納されているデータです。

上記、データがない場合もあるかもしれません。

その場合は、以下のようなマスターを作成することをおすすめします。

 

最後に、質問の補足情報が格納されたデータです。

Tableauで加工する際に、必要になる情報です。

「Wording」は、Tableauで、質問の内容を表示するために使い、また、「Question grouping」は、TableauのView毎の単位となります。

このデータは、ほとんどの場合、手元にないと思いますので、同じようなものを作成することをおすすめします。

ただし、「Question Type」については、必須ではありません。

 

これらのデータを活用し、以下AlteryxワークフローでTableau用データを作成しました。

非常に簡単なロジックとなっています。

 

続きを読む Alteryxで調査データをTableau用データに加工してみた-Part 1 #Alteryx #14 | Alteryx Advent Calendar 2016

ポイントデータ(緯度経度)データをポリゴンデータに紐付けてみる #Alteryx #09 | Alteryx

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第三弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

09日目のエントリとしてAlteryxを用いてポイントデータにポリゴンデータを紐付けてみます。

 

例によってデータは国土数値情報さんから取得します。

国土数値情報

 

今回は、医療機関データ(ポイントデータ)に

 

医療圏データ(ポリゴン)を使ってみましょう。

 

 

具体的には、医療機関データには病院などの施設名に住所と位置情報が含まれます。

一方、医療圏データには、病床の整備のために設定された地域領域が含まれます。

参考資料:wikipedia 医療計画

 

医療圏データは、3種類のポリゴン(一次医療圏、二次医療圏、三次医療圏)が含まれていますが、

今回は、医療機関に対して二次医療圏を紐付けてみましょう。

 

完成形のモジュールは以下の通りです。いたってシンプル。

 

左半分の設定内容です。

今回はシェープファイルの文字化けが発生しました。

シェープファイルの読み込み時は文字コードの指定ができないので、[ConvertFromCodePage]ツールでの変換を最初に行っています。

[Spatial Match]では、施設のデータに対して、施設の位置が含まれる医療圏ポリゴンを紐付けています。

紐づかなかったデータはU側にはじかれます。14件ほどはじかれてしまいました。

海に近い施設がポリゴンに含まれなかったり、ポイントデータにも不備がありそうです。

大分県の5施設は海上にプロットされました・・・

Alteryxの[Browse]ツールを使うだけで、エラーも簡単に可視化できます。

このあたりの異常値は本来メンテナンスが必要ですが、今回の趣旨とは外れるのでそこには触れずに進めます。

続きを読む ポイントデータ(緯度経度)データをポリゴンデータに紐付けてみる #Alteryx #09 | Alteryx

API経由で住所データをジオコーディングしてみる #Alteryx #08 | Alteryx Advent Calendar 2016

『Alteryx Advent Calendar 2016』スポット参戦シリーズ第二弾です。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

08日目のエントリとしてAlteryxを用いてYahooのAPIと連携し、ジオコーディングを行ってみます。

 

まず、YahooのAPIと連携するためには、Yahoo! デベロッパーネットワークでアプリケーションIDを取得する必要があります。

さすがはYahoo! Japanさん。分かりやすいヘルプがあるので、こちらのページを参考に簡単に取得可能です。

Yahoo!デベロッパーネットワークヘルプ

なお、ジオコーディングにはYahoo! ジオコーダAPIを用います。

Yahoo! ジオコーダAPI

 

今回、ジオコーディングの対象住所には、『住所一覧』でググったら上位に出てきた大阪府の公立小学校のデータを用いることにしました。

エクセルを開くとこんな感じです。データ取得上は不要となるタイトルがついています・・・。

しかも・・・実際には後で気づきましたが、下のほうにも別のテーブルがありました。

APIでジオコーディングする前に、これらの不要なデータをAlteryxで処理する必要がありそうです。

 

さて、実際のモジュールですが、結論から言うと最終形はこんな感じです。

意外と小さなモジュールで済みました。

 

上半分と下半分に分けて細かく見ていきます。

最初に元データとなるエクセルファイルを読み込み、不要なデータを順に取り除いています。 二連続となる[Filter]ツールでは、もう一つのテーブルとのカラム名の列と、テーブルとテーブルの間の空白をカットするために用いています。 右端にある[Formula]ツールで、APIに投げ込むURLデータを生成しています。

続いて下半分です。

API経由でのデータダウンロードに始まり、JSONデータを分解、縦持ちデータを横持ちに変更します。 次にJSON形式で取得した緯度経度はカンマ区切りで一つのカラムに入ってしまっているため、[Formula]ツールで切り分けます。

YahooのジオコーダAPIは番地レベルで厳密にヒットしないと変換されず、Nullで返ってきます。 今回は995レコード中27レコードがはじかれてしまいました。 それらがすぐに判別できるよう変換判定のフラグを立た上で、データのソートまでこのフローに組み込んでいます。

続きを読む API経由で住所データをジオコーディングしてみる #Alteryx #08 | Alteryx Advent Calendar 2016

Polygon for Tableauを使ってみる #Alteryx #06 | Alteryx Advent Calendar 2016

今回、クラスメソッドさんの運営する技術ブログDevelopers.IOで展開されている『Alteryx Advent Calendar 2016』にスポット参戦させていただくことになりました。

Alteryx Advent Calendar 2016 | シリーズ | Developers.IO

Alteryx Advent Calendar 2016 – Qiita

 

06日目のエントリとしてAlteyrxの『Polygon for Tableau』ツールをご紹介します。

 

過去にもAlteryxのマクロを用いて似たような記事がTableau-idに掲載されています。

Alteryxを活用したShapeFileのTDE化

しかし、現在は『Polygon for Tableau』というツールが標準的に存在するため、もっと簡単にシェープファイルをTableau用に加工できるようになりました。

 

ではまず適当にシェープファイルを拾ってきましょう。

シェープファイルのオープンデータといえば国土交通省の運営する

国土数値情報

です。いつもお世話になっております。

今日は線路の情報を使ってみましょう。

 

 

全国のデータを一括でダウンロードできますが、中には二つのシェープファイルが含まれますが、ここでは線路データとなるRailroadSection.shpを使います。

ちなみに今回取り扱う空間データ(Spatial Object)は、Polygon(面)ではなくline(線)です。

『Polygon for Tableau』を使うとこんな簡単なモジュールでTableauデータソース化が可能です。

 

シェープファイルは下図のとおり、lineデータです。線路っぽいデータが見えています。

 

続いて元データの属性情報(カラム名)を[Select]ツールでRenameします。

 

空間データ(Spatial Object)に[Polygon for

続きを読む Polygon for Tableauを使ってみる #Alteryx #06 | Alteryx Advent Calendar 2016

AlteryxにおけるExcelの日本語データの読み込みエラーについて

日本語入力したExcelデータをAlteryxで読み込むと

Excel内部で保持している日本語のふりがなデータが出力されてしまいます。

ちなみに別のアプリケーションから吐き出されたデータをエクセルに出力した場合は基本的に生じませんが、Excelに手入力すると起こる問題です。

これまでは、いったん別のシートに数式貼り付けした後に値貼り付けで戻す、のような不毛な作業で解消していましたが、国内では希少なAlteryxヘビーユーザーの方に解決策を教わりました。

File FormatをExcel Legacyに変更するだけとは・・・。あまりに単純な調整で解消したので驚きました。 でも言われなければずっと気づかなかったなと。

なお、年月のフォーマットがdateからdatetimeに変わっていますが、業務上影響はないですね。影響があるならSelectツールで型変換すれば解消です。

Fuji

Tableau * Alteryx でポリゴンとポイントを同時にマッピングする

今回は前回の投稿でご案内したとおり、行政区画ポリゴンとバス停を同時にTableau上でマッピングする方法を共有します。

Tableauではポリゴンとポイントを同一地図上に配置する場合、若干工夫が必要です。 簡単に言うと、現時点では複数の緯度経度フィールドを一つのマップに落とすことができません。 これはポイントデータ同士でも同じです。

例えば、AさんがZ店で買い物をしたとします。この場合、Aさんの住所、Z店の店舗住所が取得可能とすると、一つのトランザクションレコードに『顧客住所緯度及び経度』と『店舗住所緯度及び経度』の二種類の緯度経度フィールドを紐付けることが可能です。

しかし、Tableauでは、同じマップ上に表現できる緯度経度フィールドは一種類の組み合わせのみとなります。 そのため、両者を共存させるには、顧客データと店舗データを縦に積み上げ、統合した緯度経度フィールドを持たせる必要があります。

実際に見ていきましょう。

最初は前回同様、ポリゴンとポイントのマッチングです。今回のモジュールでは分岐したフローの上側がそれに該当します。 ここはあくまでバス停に行政区画を紐付けることが目的です。 人口などはポリゴンデータに持たせれば良いため、今回はチェックを外しています。

分岐したフローの下側はポリゴンデータのTableau化です。 Developers.IOでも過去に取り上げられていた『Visual Analytics Kit for Tableau』の中に現在は[Polygon for Tableau]ツールが加わっており、これを用いると一発で変換されます。

ただ、人口数や世帯数のようなデータが、ポリゴンのポイントの数だけ増殖してしまいます。 集計の際に平均で取り扱うか、今回のモジュールのように1つを残してカットする必要があります。

最後に[Union]でデータを結合し、緯度・経度を1つのフィールドにまとめてデータソースは完成です。

TableauにこのTDEを接続し、ポリゴンとポイントのグラフを、列と行ともに二重軸でつなげで実装完了。(『統合緯度経度』シート)

注意点としては、行政区画のポリゴンデータは『町丁・字等名称』でユニークではないため、マークの詳細に『AlteryxKey』というディメンションを投げ込む必要があります。また、『PointOrder』もディメンションとしてパスに落とさなくてはなりません。

【蛇足】 最初、Alteryxのワークフロー上で『町丁・字等名称』をキーにポリゴンをグルーピングしたのですが、結果的にTableau上ではドーナツの穴の中に存在する区画との重複が生じました。 Tableauではドーナツのように穴の開いたポリゴンデータ(一筆書きできないもの)は現時点では取り扱えないようです。 なお、国勢調査の行政区画ポリゴンはドーナツ型のものは適当に分断されているようで、下手にグルーピングせずにそのまま使えば特に問題は無さそうです。 ご参考までに。

 

T.Fuji

続きを読む Tableau * Alteryx でポリゴンとポイントを同時にマッピングする

ポイントとポリゴンのマッチング

今回はAlteryxを使ってポイントデータをポリゴンに紐付ける方法をまとめます。

ポイントデータをポリゴンに紐付けると言われてもピンと来ない方も多いと思いますが、自社アプリなどで位置情報を取得している場合、これができると分析の幅が広がります。

簡単に言うと、緯度経度情報だけ持っていても、先日の投稿「Tableau * Alteryx でシェープファイルを可視化」でのアウトプットのように、Tableau上ではマップに個々の点としてプロットすることはできたとしても、全く同じ緯度経度でなければ異なる点として扱われます。 そのため、緯度経度を持つレコードに住所の情報などがなければ、特定の地区に何レコード存在するのか集計できません。

GPSによる行動ログデータなどの緯度経度が変化しやすいものは、ある程度の領域でグルーピングした上で移動なのか滞在なのかなどを判別していく必要が生じますので、今回のような処理が役立つものと考えられます。

実際にフローを見ていきましょう。

第一弾として藤沢市のバス停の位置情報を行政区画(町丁目)に紐付ける処理を実装してみます。 ※目的はあくまでもポイントデータとポリゴンデータのマッチングなので、サンプルアウトプットでは行動ログデータを用いていませんが、緯度経度のみのポイントデータをポリゴン(領域)に紐付ける処理であれば全く同じ流れで行うことができます。

バス停のデータは国土数値情報から、行政区画はeStatから国勢調査データを取得しています。

Alteryxでは[Spatial Match]ツールを使って、空間情報をマッチングさせます。 この場合は、まずは藤沢市の町丁目ポリゴンに含まれるバス停を抽出する必要があるため、ポリゴンをTargetとしています。

マッチング処理には複数のパターンがあります。英語ですがAlteryxのヘルプページに図で説明があるのでこれを見るとわかりやすいです。 今回は「contains」が該当します。

このケースでは、ポイントデータ(バス停)がどの領域(町丁目)に含まれているかを知りたいだけなので、Match側のデータのみ使います。

必要なデータを選択してTDEとして吐き出して、モジュールは完成です。

Tableauで可視化するとこんな感じです。

左側のマップについては、バス停のポイントを緯度経度に変換さえできれば、ほぼ同じアウトプットをTableauで実装できますが、実際には国勢調査データでの行政区画名や世帯数、人口数などが紐付いています。そのため、右側のアウトプットのように行政区画単位での集計も可能になっています。

次回は少し手を加えて、行政区画ポリゴンとバス停を同時にTableau上でマッピングする方法を共有したいと思います。

T.Fuji

続きを読む ポイントとポリゴンのマッチング

Alteryxでデータの一括結合

特に実務部門では“あるある”ネタだと思いますが、分析やレポート用にデータを既存のシステムから抜き取ったり、抜き取ってもらったデータを共有してもらった場合、同形式(同じテーブル、同じ拡張子)のデータが別々のファイルとして多数蓄積することがあります。

例えば、アクセスログの集計データが毎日CSVで自動で吐き出されているケースなどです。この場合、Tableauで分析を行うには、いったんデータを一つに結合する必要があります。

プログラムが書けるエンジニアならば、ちゃっちゃっとコードを書いて、自動でまとまるようにしてしまうと思います。 しかし、実務部門においては、プログラミングができずに一つずつファイルを開いてエクセルで一つにまとめる作業を毎週繰り返し行っていたりすることが意外と多く存在するのではないでしょうか? 毎週でも30分で終わる作業だったりすると、わざわざシステム部門に申請しなくても、という考えもあるかもしれませんが、ヒューマンエラーのリスクと、累積していく不毛な集計作業時間を考えると極めて非効率・非生産的な業務と言えます。

こういった処理はAlteryxで簡単に実装することができます。

今回は先日の投稿で用いた、国交省が公開している日本の学校のポイントデータを使って処理のフローを見てみましょう。

実際にはこちらのサイトから全国分のデータを一括でダウンロードできるので、それを使えば済む話ですが、ここではデータの一括結合の処理事例を示すため、あえて都道府県別に47のZIPファイルをダウンロードします。

ありがちなケースを想定すべく、『都道府県別』フォルダの下に個々のダウンロードファイル(ZIPを解凍した後のフォルダ)を置く形にしています。 例えば、月別にフォルダがあって、その中に日別アクセスログのCSVが置いてあるようなケースが同類ですね。

『都道府県別』フォルダ

個々のフォルダの中身は先日の投稿と同じく、シェープファイルなどが含まれています。

ではAlteryxモジュールを見てみましょう。[Directory]と[Dynamic Input]ツールで簡単に実装できます。

これで完成!

と思ったら以下のようなエラーが出てしまいました。

格好悪いので別のファイル群に切り替えようかと一瞬心が揺れましたが、エラーへの対処も実装の一部なのでその後の修正処理も記します。

上の画像では切れてしまっていますが、エラーは5つのファイルで発生していました。 エラー内容は全て以下のような感じです。 …\P29-13_02.shp” has a different schema than the 1st file in the set. つまり、最初に読み込んだ(テンプレートでも使用した)P29-13_01.shpとスキーマが違うようです。

解決するのに意外と時間がかかってしまったのですが、結論から言うと、変数の型が違うだけでした。

上図で示した[Union]ツールのように厳密に型が一致しなくてもエラーが出ないものもありますが、そうでないものもあります。 [Dynamic Input]は後者なようで注意が必要です。

最終的には以下のようなモジュールで対処しました。

システムから自動的に吐き出されているデータならば、このようなエラーは生じにくいと思いますので通常はシンプルなモジュールで実装可能なはずです。 今回はトラブル処理のおまけつきということで。

T.Fuji

続きを読む Alteryxでデータの一括結合