Alteryxでヘッダ情報付きCSVファイルを扱う

2019.03.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。DI部プリセールスエンジニアの兼本です。

CSVファイルといえば、一般的にカラムヘッダ部とデータ部があり、カンマ区切りやタブ区切りになっているテキストデータかと思いますが、世の中にはなぜかダウンロードした日付やデータに関する補足説明が先頭に含まれているCSVファイルが存在します。

今回はこのようなデータをAlteryxで読み込む方法について考えます。

使用環境について

Alteryx Designer 2019.1を使用しています。

使用データについて

気象庁が公開している過去の気象データを利用させていただきました。 こんなデータです。

ダウンロードした時刻:2019/03/xx xx:xx:xx

,東京,東京,東京,東京,東京,東京,東京,東京
年月日,平均気温(℃),最高気温(℃),最低気温(℃),平均風速(m/s),平均蒸気圧(hPa),平均雲量(10分比),天気概況(昼:06時~18時),天気概況(夜:18時~翌日06時)
,,,,,,,,
2018/2/1,3.0,6.3,0.6,2.3,6.0,9.8,薄曇後雨,雨後雪
2018/2/2,1.9,3.8,0.5,2.4,6.6,10.0,雪後みぞれ時々曇,曇時々雨
2018/2/3,4.5,7.8,1.6,1.9,6.4,8.5,薄曇時々晴,曇時々晴

まずはそのまま読み込んでみる

Alteryxはデフォルトで文字コードがUTF-8であることを期待していますが、気象庁が提供しているCSVファイルは文字コードがShiftJISなので、コードページを「UTF-8」から「ANSI/OEM - 日本語Shift-JIS」に変更する必要がありますが、それ以外はデフォルト設定にします。

プロパティ設定下部のプレビュー画面ですでに期待する結果とは違いますが、気にせずワークフローを実行します。

エラーになってしまいました。 これは、AlteryxがCSVファイルを読み込むときに、1行目のデータ書式をもとに読み込むべきフィールド数を決めているためです。 今回のデータは1行目には1フィールドしかないにも関わらず、3行目からフィールド数が増えたため、正しくデータを読み込むことができませんでした。

いらないヘッダ情報をスキップする

このようなケースに対応するもっともシンプルな方法は、データ読み込みをおこなう開始行を変更することです。 データ入力ツールには「データインポートの開始行」というオプションがあります。デフォルトは「1」なので、ここにデータ読み込みを開始したい行数を指定すればOKです。 今回のケースでは実際のヘッダ行が始まる「4」行目を指定しています。

実行結果は以下の通り。期待するデータを読み込むことができました。

ヘッダ情報も欲しいとき

ヘッダ情報にも欲しいデータがある場合は、少し工夫が必要です。例として、今回のデータには3行目に「東京」という気象情報の地点情報が含まれているので、地点情報を各レコードに付与して以下のようなデータを作成してみます。(赤く囲った部分が、追加した地点情報です。)

作成したワークフローは以下の通りです。

データ入力ツール

最初のデータ入力ツールでは、CSVファイルのデータを1行まとめて取得するために、「区切り文字」オプションに「¥0」を指定しています。

列分割ツール

列分割ツールでは、フラットデータとして読み込んだField_1のデータをカンマ(,)区切りとして9つのフィールドに分割しています。

実行結果をみると以下のようにデータが分割されていることが確認できます。

必要な行の選択

次のステップは処理を2つに分けています。

  • サンプルツール ... 実際の気象データのみを取り出すために最初の3レコードをスキップします。

  • レコード選択ツール ... 取得したい行を数値範囲で指定できます。今回は地点情報を含む3行目だけを取り出すために使用しています。

動的リネームツール

サンプルツールで取得したデータの1行目にはヘッダ行が含まれていますので、このデータを使ってヘッダを作成します。

フィールド付加ツール

フィールド付加ツールを使うと、ターゲット(T)アンカーの各レコードに対して、ソース(S)アンカーのレコードを付与することができます。 また、レコードに付与するフィールドを選択したり、フィールド名を変更することもできます。 この例では、最初に読み込んだField_1のデータを元にしてヘッダを作成したため、フィールド名が長くなりすぎてしまいました。スクリーンショットがわかりにくくて申し訳ないです。m(__)m

フィルタツール

ヘッダ行の直後に出現している空レコードをフィルタツールで削除すれば、完成です。

まとめ

いかがでしたでしょうか。 Alteryxでヘッダ情報付きCSVファイルを扱う方法についてご紹介をいたしました。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400