Alteryx Designerのチュートリアルを全部試してみた #alteryx #15 | Alteryx Advent Calendar 2016

alteryx

こんにちは。DI部 三上です。

当エントリは『Alteryx Advent Calendar 2016』の15日目のエントリです。

Alteryx Designerをさわってみました!

はじめに

三上@当エントリ執筆者のSpec:「Alteryxって、何ですか?」(あせ

・・・。

→まずはお勉強をば。。

→なにやらいろいろできそう@@!

 

習うより慣れろ!

で、チュートリアル、やってみました。

やってみよう

動作環境

  • OS:Windows 10(Mac Sierra(10.12.1) VMware Fusion)
  • Alteryx Designer Version:10.6.8.17850
  • Redshift Cluster Version:1.0.1125

Tutorial 01:データ準備

AlteryxにデータをInputします。

今回は、郵便番号データをcsvファイルから読み込んでみます。

  • レコード数:約12万件

日本郵政のダウンロードページから、「全国一括」データをダウンロードしました。


Alteryxを立ち上げて、[File] > [New Workflow] > [Input Data]アイコンを配置します。

ダウンロードしておいた郵便番号のcsvを選択して開きます。

→文字化けしとる。。(S-JISですものね。。。orz

そんなときには、エンコードマクロを使います!

※マクロ展開してできた _externals\1配下のファイルを置き換えて、ツール登録しました。

→登録したマクロを配置して、Inputファイルを選択します。

→Selectをつなげます。

→実行。

→文字化けなおったー!v

  • 実行時間:3.7 sec

csvからデータをInputできました。

Tutorial 02:データをフィルタリング

データをフィルタリング&ソートします。


フィルタリングとソートに使用するカラム名を変更しておきます。

→Filterアイコンを配置します。

→Filter条件を設定します。

今回は、東京都のデータのみ抽出してみます。

→FilterアイコンのTrueの先に、Sortアイコンを配置します。

→Sort条件を設定します。

郵便番号の昇順を設定しました。

→実行。

FilterのTrueタブに、東京都のデータのみが抽出されています。

SortのOutputタブを見ると、ちゃんと郵便番号の昇順に並び替えられてます。

  • 実行時間:3.8 sec

フィルタリングとソートができました。

Tutorial 03:データをブレンディング

別ソースのデータをブレンディングします。

今回は、郵便番号データに住所CD、都道府県CD、市区町村CD、町域CDを付与してみます。

住所.jpから、全国の住所データをダウンロードしました。

  • レコード数:約15万件

郵便番号データから、郵便番号と住所情報を抽出します。

→住所データから、付与したいコードとフィルター条件に指定したいカラムを抽出します

→住所データから、東京都の有効なデータをフィルタリングします。

→郵便番号をキーにしてJOINしたいのですが、住所データの郵便番号にはハイフンが入っていました。。

Formulaアイコンをつなげて、ハイフンを除去します。

※Formulaツールで使用できる式は、configウィンドウの「Function」タブから選択できます。

→Joinアイコンを配置して、結合条件を設定します。

→最後に、sortをつなげて、実行。

→郵便番号+住所データが取得できました!

  • 実行時間:9.4 sec

※ただし、この実行時間はS-JIS→UTF8変換マクロ(β版)が占める割合が大きいと思われます。

ワークフロー実行中、それぞれのアイコンにプログレス表示が出ますが、

各マクロ実行時間が約3sec(体感)

→文字コード変換なしの場合の実行時間は3.4secほどでしょうか。


以下、個人的趣味ですが。。

RDB@MariaDB(10.1.19)からデータ抽出する場合と、実行時間を比較してみました。

  • 郵便番号データをLOAD
create table m_postal_code(
    id varchar(255),
    code_pre varchar(255),
    code varchar(255),
    pref_kana varchar(255),
    city_kana varchar(255),
    addr_kana varchar(255),
    pref varchar(255),
    city varchar(255),
    addr varchar(255),
    col1 varchar(255),
    col2 varchar(255),
    col3 varchar(255),
    col4 varchar(255),
    col5 varchar(255),
    col6 varchar(255),
    PRIMARY KEY(code, addr)
);

load data local infile 'C:/Users/mikami.yuki/KEN_ALL.CSV' into table m_postal_code fields terminated by ',' enclosed by '"';

  • 住所データをLOAD
create table m_addr(
    addr_cd varchar(255),
    pref_cd varchar(255),
    city_cd varchar(255),
    area_cd varchar(255),
    postal_cd varchar(255),
    office_cd varchar(255),
    delete_flg varchar(255),
    pref varchar(255),
    pref_kana varchar(255),
    city varchar(255),
    city_kana varchar(255),
    addr varchar(255),
    addr_kana varchar(255),
    addr_description varchar(255),
    col1 varchar(255),
    col2 varchar(255),
    col3 varchar(255),
    col4 varchar(255),
    col5 varchar(255),
    col6 varchar(255),
    col7 varchar(255),
    col8 varchar(255),
    PRIMARY KEY(postal_cd, addr)
);

load data local infile 'C:/Users/mikami.yuki/zenkoku.csv' into table m_addr fields terminated by ',' enclosed by '"' ignore 1 lines;

  • SQLクエリ実行
select 
    p.code,
    a.addr_cd, 
    a.pref_cd,
    a.city_cd,
    a.area_cd,
    p.pref_kana,
    p.city_kana,
    p.addr_kana,
    p.pref,
    p.city,
    p.addr
from 
    m_postal_code p 
    inner join (
        select 
            addr_cd,
            pref_cd,
            city_cd,
            area_cd,
            replace(postal_cd, "-", "") as postal_cd 
        from 
            m_addr 
        where 
            delete_flg = "0" 
            and pref = "東京都"
    ) a 
    on p.code = a.postal_cd 
where 
    pref = "東京都"
    order by p.code
;

  • 実行時間:約1 sec

あ、案外早かった。。(10万件レベルなら、RDS許容範囲ですし、ね。。

Tutorial 04〜08:データ分析 & GUIやマクロをつくる

Alteryxの本領発揮(?!)

Inputしたデータを分析できます!

ドロップダウンリストやチェックボックスなどのGUIも簡単に追加でき、分析対象を選択できます!

詳しくは、先輩がたのブログでもご紹介中です。

Alteryx Advent Calendar 2016 - Qiita

 

個人的には、緯度経度データからの位置情報の可視化にちょっと感動v

Tutorial 09:データベース接続

DBからデータを抽出します。


まずは、Redshiftに接続してみます。

全国の郵便番号データを、Redshiftに入れました。

ODBC(Open Database Connectivity)で接続するので、RedshiftのODBCをインストールしておきます。

「In-Database」タブから「Connect In-DB」アイコンを配置して、「Connection Name」プルダウンから「Manage Connections...」をクリック。

ポップアップ表示されたManage In-DB Connectionsウインドウで以下を設定します。

  1. 「Data Source」プルダウンから「Amazon Redshift」を選択
  2. 「Connections」の「New」ボタンをクリック
  3. 「Connections String」プルダウンで「New database connection...」をクリック

Redshift ODBC Connectionウィンドウがポップアップ表示されるので、「ODBC Admin」ボタンをクリック。

ODBCデータソースアドミニストレーターで「追加」ボタンをクリックし、インストール済みのRedshiftのODBCを選択→「完了」ボタンをクリック。

接続先情報を入力して「OK」ボタンをクリック

追加したデータソースを選択して「OK」ボタンで戻ります。

Redshift ODBC Connectionウィンドウの「Redshift Data Source Name」プルダウンにデータソースが追加されているので、選択してOK。

Manage In-DB Connectionsウインドウの「Write」タブの「Driver」でも「Same as Read Driver」を選択しておきます。

Choose Table or Specify Queryウィンドウが表示されるので、テーブルを選択(またはクエリを入力)してOK。

Browsw In-DBをつないで実行してみると、

Redshiftのデータが取得できました!

→Filter In-DBで、東京都のレコードだけ抽出します。

これにcsvファイルから住所データをブレンディングしてみます。

csvからInputのワークフローを作成したら、Data Stream Inをつなげて、Inする先を設定。

今回はRedshiftのtest_alteryxテーブルに上書きで入れますが、データソースは変更可能でテンポラリテーブル指定もできます。

ワークフロー実行時、ここで指定した先にちゃんとデータがInsertされていました。

→Inner Joinで結合条件を指定します。

その先にData Stream Outをつなげれば、またAlteryx上でデータの分析や整形ができます。

ちなみに・・

Redshiftのデータを先にStream Outしてからの結合も、もちろん可能。

Redshiftに一回データを入れて → また出して、の手間がない分、実行時間も随分違いました。

※前者:約3min / 後者:約8sec

  • outer joinで結合したい
  • サマリー結果をDBに残したい

などの場合は前者のフローにすべきかと思いますが、用途に合わせてワークフローも自由に作成可能です。

まとめ(所感)

  • 感覚的に簡単に操作できました。
  • ワークフローが可視化され、実行中のプログレス表示もあるので、わかりやすかったです。
  • ツール(できること)が多い!(嬉しいやら、混乱するやら。。@@;
  • ツールによっては指定条件の型制限(先に型を変更しなければならない)などあるため、慣れるまでは大変。。
  • 公式がまだ英語だけなので、日本語ヘルプが(ごにょごにょ。。

→当ブログでも今後もAlteryx関連ドキュメント、充実させてまいります!

 

明日16日目はtruestarさんの『Alteryxで調査データをTableau用データに加工してみた』の予定です。

明日もお楽しみに!