Challenge #47: Vehicle Identification Number Test ~車両識別番号のテスト~ – Alteryx Weekly Challenge

2019.04.10

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

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

Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は車両識別番号のテストに挑戦します。

動作環境

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

  • Windows 10 Pro
  • Alteryx Designer 2019.1.4.57073 英語版

Challenge #47: Vehicle Identification Number Test

お題

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

お題

Input側のデータはこちら。

Input側

Output側のデータはこちら。

Output側

お題の説明の中に、Wikipediaへのリンクが用意されています。

Wikipedia内の説明を参考にして、「VIN」列から「Check Digit」列と「Calculation」列を作成します。

ワークフローの全体図と追加したデータ

ワークフローの全体図はこちら。

ワークフロー全体図

解答の作成にあたり、WikipediaにあるTransliteration key: values for VIN decodingとWeight factor tableの対応表をText Inputツールで作成しました。

Transliteration key: values for VIN decodingはこちら。

Transliteration key: values for VIN decoding

Weight factor tableはこちら。

Weight factor table

「Check Digit」列の準備

「Check Digit」列の準備

RegExツールを使用して、「VIN」列のデータを1文字ずつに分けていきます。

RegEx

設定はこちら。

  • Field to Parse: 「VIN」列
  • Regular Expression: (.)
  • Output Method: Tokenize
  • Split to Columns
  • #of Columns: 17

この時点で出力されたデータはこちら。9番目のデータが「Check Digit」列になるデータです。

Transposeツールを使用して、データを縦持ちに変換します。

Transpose

FilterツールのBasic filterを使用して、「Name」列が「9」に等しいデータのみ抽出します。

Filter

「Caluculation」列の準備

「Caluculation」列の準備

前項のTransposeツールの出力データを使用します。

Transposeの出力データ

Text Inputツールで用意したTransliteration key: values for VIN decodingのデータを使用して、Find Replaceツールで「Value」列のアルファベットを数字に変換します。

Find Replace

設定はこちら。

  • Any Part of Field
  • Find Within Field: 「Field」列
  • Find Value: 「Alphabet」列
  • Replace Found Text With Value: 「Number」列

Weight factor tableのデータと結合するために、Selectツールを使用して「Name」列をInt32型に変更します。

Select

Joinツールを使用して、Weight factor tableのデータと結合します。Join by Specific Fieldsを指定し、「Name」列と「Position」列で結合をおこなっています。また、あわせて「Value」列をInt32型に変更しています。「Value」列には文字列(NA)が含まれていましたが、これはNullに変換されます。

Join

Formulaツールを使用して「Products」列をInt32型で作成し、「Value」列に「Weight」列をかけた値を出力します。

Formula

「Value」列にはNullが存在するため、Nullの場合は0に置き換えて計算しています。

IIF(IsNull([Value]),0,[Value])*[Weight]

Summarizeツールを使用して、「VIN」列でグループ化と「Products」列の合計を出力します。

Summarize

Formulaツールを使用して「Calculation」列をV_WString型で作成し、

まずは「Sum_Products」列を11で割った余りを出力します。

Mod([Sum_Products], 11)

余りが「10」だった場合は「X」に変更します。

IIF([Calculation] == "10", "X", [Calculation])

2つのデータの結合

2つのデータの結合

JoinツールのJoin by Specific Fieldsを使用して「VIN」列でデータを結合します。あわせて不要な列の削除と列名の修正を行います。

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

最後に

今回はChallenge #47: Vehicle Identification Number Testに挑戦しました。

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

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

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

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

alteryx_960x400