Alteryxで扱うデータは、観測対象の種類ごとに列を定義し、1行のデータが実際に観測された値となります。
列単位で見ると、同一の列はすべての行で同じ項目・型となります。
観測されるデータは行(レコード)単位で保存され、1レコード内には各列の項目に対応する値が記録されます。
これは、データ分析をするうえで使いやすい形式なのですが、世の中で生成されるデータがすべて分析のために生まれたというわけではないためこの形式になっているとは限りません。
単純に列名の情報がない(列名のみの別データやドキュメントを参照する必要がある)といった状況から、固定の数の列で表されてないもの、集計された後の結果、人間にとって見やすくなるように整形されたものなど、様々あります。
それらももちろんデータです。データには有益な情報が含まれているため分析で活用したい場面も多くあります。
Alteryxでは、上記のようなデータ構造のみを扱うため、最初に整形してやる必要があります。
そういった場面で活躍するシーンが多いのがDynamic Renameツールです。
最初に見ていくのは単一のファイル中にデータと列名両方が含まれているパターンです。
通常であれば、ヘッダありとして読み込んでしまえばそれが列名として扱われますが、そうはいかない状況もあります。
一例としてヘッダに相当する部分が階層構造になってる状況を考えます。
以下のようなデータを考えます。
このExcelファイルでは、親階層が"年"、子階層が"月"となっています。
これをそのままAlteryxで読み込むと以下のようになります。
これは望んだ結果ではないでしょう。
これを以下のようなデータになるように整形します。
この処理は以下のようなワークフローを使って実現しています。
最初にRecord IDツールで一意なIDを振ったのち、Transposeツールでその値をKey Fieldにして縦持ちに変換します。
このデータはヘッダなしとして読み込んでいるので以下のように先頭(RecordIDが1)行が年またはセル結合によって生じたNullのどちらかになっています。
Nullになってる部分は、元のデータはセル結合で年が入っていたため、Multi-Row Formulaツールで以下のような計算を行ってこの部分を埋めます。
iif(isnull([Value]), [Row-1:Value], [Value])
続いて、Cross Tabツールで以下の設定を行って横持ちに変換します。
年と月がそれぞれの列となるので、Formulaツールで年月の列を作成します。
iif([1] == "", [2], [1] + [2])
この結果は以下のようになります。
Name, 1, 2の列はもう不要なのでSelectツールで削除したのち、ようやくDynamic Renameツールが登場します。
Dynamic Renameツールでは、Rename Modeに「Take Field Names from First Row of Data」を選択して、データ中の1行目を列名に変えます。
以下のように都道府県が列名となりました。
あとはこれの行と列を入れ替えるために、Transposeで都道府県を縦持ちにしたのち、Cross Tabで年月を横持ちに変換すれば、整形後の形式となります。
Dynamic Renameツールではデータ内容を利用して列の操作をします。
そのため、このデータでは4つの都道府県のみのデータですが、この数が増えてもワークフロー内容は変更することなく動きます。
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.
ここにコメントを追加するには、ご登録いただく必要があります。 ご登録済みの場合は、ログインしてください。 ご登録がまだの場合は、ご登録後にログインしてください。