Community is experiencing an influx of spam. As we work toward a solution, please use the 'Notify Moderator' option on the ellipsis menu to flag inappropriate posts.
Free Trial

ブログ

アナリティクスに関する聡明な考えに触れ、インサイトとアイデアが得られます。
ozawa
ACE Emeritus
ACE Emeritus

Alteryxで扱うデータは、観測対象の種類ごとに列を定義し、1行のデータが実際に観測された値となります。

 

table.png

 

列単位で見ると、同一の列はすべての行で同じ項目・型となります。
観測されるデータは行(レコード)単位で保存され、1レコード内には各列の項目に対応する値が記録されます。

 

これは、データ分析をするうえで使いやすい形式なのですが、世の中で生成されるデータがすべて分析のために生まれたというわけではないためこの形式になっているとは限りません。

 

単純に列名の情報がない(列名のみの別データやドキュメントを参照する必要がある)といった状況から、固定の数の列で表されてないもの、集計された後の結果、人間にとって見やすくなるように整形されたものなど、様々あります。
それらももちろんデータです。データには有益な情報が含まれているため分析で活用したい場面も多くあります。

 

Alteryxでは、上記のようなデータ構造のみを扱うため、最初に整形してやる必要があります。
そういった場面で活躍するシーンが多いのがDynamic Renameツールです。

 

データから列名を取得する

最初に見ていくのは単一のファイル中にデータと列名両方が含まれているパターンです。
通常であれば、ヘッダありとして読み込んでしまえばそれが列名として扱われますが、そうはいかない状況もあります。
一例としてヘッダに相当する部分が階層構造になってる状況を考えます。
以下のようなデータを考えます。

 

data1.png

 

このExcelファイルでは、親階層が"年"、子階層が"月"となっています。
これをそのままAlteryxで読み込むと以下のようになります。

 

data1_ayx.png

 

これは望んだ結果ではないでしょう。
これを以下のようなデータになるように整形します。

 

result1.png

 

この処理は以下のようなワークフローを使って実現しています。

 

wf1.png

 

最初にRecord IDツールで一意なIDを振ったのち、Transposeツールでその値をKey Fieldにして縦持ちに変換します。
このデータはヘッダなしとして読み込んでいるので以下のように先頭(RecordIDが1)行が年またはセル結合によって生じたNullのどちらかになっています。

 

transpose.png

 

Nullになってる部分は、元のデータはセル結合で年が入っていたため、Multi-Row Formulaツールで以下のような計算を行ってこの部分を埋めます。

 

iif(isnull([Value]), [Row-1:Value], [Value])

 

続いて、Cross Tabツールで以下の設定を行って横持ちに変換します。

 

  • Group Data by these Valuses : Name
  • New Column Headers : RecordID
  • Value for New Columns : Value

年と月がそれぞれの列となるので、Formulaツールで年月の列を作成します。

 

iif([1] == "", [2], [1] + [2])

 

この結果は以下のようになります。

 

cross_tab.png

 

Name, 1, 2の列はもう不要なのでSelectツールで削除したのち、ようやくDynamic Renameツールが登場します。
Dynamic Renameツールでは、Rename Modeに「Take Field Names from First Row of Data」を選択して、データ中の1行目を列名に変えます。
以下のように都道府県が列名となりました。

 

rename.png

 

あとはこれの行と列を入れ替えるために、Transposeで都道府県を縦持ちにしたのち、Cross Tabで年月を横持ちに変換すれば、整形後の形式となります。

 

Dynamic Renameツールではデータ内容を利用して列の操作をします。
そのため、このデータでは4つの都道府県のみのデータですが、この数が増えてもワークフロー内容は変更することなく動きます。

Yuya Ozawa

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.

コメント