Challenge #37: Parsing a Raw XML File ~XMLファイルのパース~ – Alteryx Weekly Challenge

2018.12.10

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

こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。

当エントリは『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』の10日目です。

『Alteryx Weekly Challenge:Intermediate Level Advent Calendar 2018』では、Alteryx Communityで公開されているWeekly ChallengeのIntermediate Levelにひたすら1人で挑戦していきます。

今回はXMLファイルのパースに挑戦します。

動作環境

当エントリの執筆には、以下の環境を利用しています。

  • Windows 10 Pro
  • Alteryx Designer 2018.4.3.54046 英語版

Challenge #37: Parsing a Raw XML File

お題

今回挑戦するお題はこちら。

「Input」側のデータはこちら。「customer_OuterXML」列がXMLになっています。

「Output」側のデータはこちら。

解答の概要

今回作成するワーフクローは以下の通りです。

  1. Record IDツールでIDを付与
  2. Select、XML Parse、SummarizeツールでXMLのパース
  3. SelectツールでXML以外のデータを準備
  4. Multiple Joinツールでデータの結合

IDの付与

Record IDツール(Preparation -> Record ID)を使用して、IDを割り当てます。

XMLのパース

Selectツール(Preparation -> Select)を使用して、「RecordID」「customer_OuterXML」列のみ残します。

XML Parseツール(Parse -> XML Parse)を使用して、「customer_OuterXML」列の内容を展開します。XML Element to ParseRoot を選択し、Return Child ValuesReturn Outer XML を選択します。

XML Parseツールの出力を確認すると、「reference」「reference_OuterXML」といった列が作成されています。

ここから3つに分かれて処理を行います。

「Customer_Reference」列の作成

Summarizeツール(Transform -> Summarize)を使用して、「Customer_Reference」列を作成します。「RecordID」列でグループ化し、「reference」列の文字列を出力しています。

「Customer_Reference」列を作成できました。

「Customer_Bill_to_」列の作成

Selectツールで「RecordID」「bill_to_OuterXML」列のみ残します。

XML Parseツールを2つ使用します。1つは Specific Child Name を選択して contact を入力、Return Child Values を選択します。もう1つは Specific Child Name を選択して address を入力、Return Child Values を選択します。

Selectツールを使用して不要な列を削除し、列の名前を調整します。

「Customer_Bill_to_」列を作成できました。

「Customer_Ship_to_」列の作成

「ship_to_OuterXML」列に対して 「Customer_Bill_to_」列の作成 と同様の処理を行い、「Customer_Ship_to_」列を作成します。

XML以外のデータの準備

元のデータには、「Order Number」などのXML以外のデータがあります。このあとデータを結合するため、XML以外のデータを準備します。

初めのRecord IDツールの出力にSelectツールを接続し、「customer_OuterXML」列を削除します。これでXML以外のデータを準備できました。

データの結合

準備したデータをJoin Multipleツール(Join -> Join Multiple)を使用して、結合します。それぞれのデータには「RecordID」列があるので、Join by Specific Fields を選択して「RecordID」列を使用して結合します。また、重複した「RecordID」列を削除し、列の順番を調整します。

結果を確認して完成です。

最後に

今回はWeekly ChallengeのChallenge #37: Parsing a Raw XML Fileに挑戦しました。

明日もお楽しみに!

サンプルワークフローのご案内

クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。

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

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

alteryx_960x400