Alteryxで3桁の整数を並べて6桁の整数を作り7で割るをやってみた

2018.10.16

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

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

数学の話で、3桁の整数を並べて6桁の整数を作り7で割ると、3桁の整数がどんなものであっても必ず割り切れるそうです。通常、証明する場合に999個ある整数を1つずつ計算するようなことはしないと思いますが、今回はAlteryxを使って999個ある整数を計算するという力業で確認してみます。

3桁の整数を並べて6桁の整数を作り7で割る

ワークフローの概要

  1. Generate Rowsツールで整数を準備
  2. Selectツールで文字列型に変換
  3. Formuraツールで3桁と6桁の整数を準備
  4. Selectツールで数値型に変換
  5. Formuraツールで7で割った結果を出力
  6. Filterツールで「.」を含むか確認
  7. Browseツールで結果を確認

ワークフローの詳細

Preparation -> Generate Rows を使って1~999の整数を準備します。Create New Field で新しく「Value」列をInt32型で追加します。Initialization Expression に「1」、Condition Expression に「Value <= 999」、Loop Expression (Usually Increment) に「Value + 1」を設定します。これで1~999の整数が出力されます。

3桁の整数を並べて表示するため、Preparation -> Select を追加して「Value」列を V_WString 型に変換します。

Preparation -> Formula を追加し、まず「Value」列の整数に0を加えて3桁に統一します。新しく「3keta」列を追加し、以下の条件で出力するよう設定します。Data type には V_WString を選択しています。

  • 「Value」列の文字列の長さが1の場合は「Value」列のデータの前に「00」を加えて出力
  • 「Value」列の文字列の長さが2の場合は「Value」列のデータの前に「0」を加えて出力
  • 「Value」列の文字列の長さが3の場合は「Value」列のデータを出力

続いて、新しく「6keta」列を追加し、「3keta」列のデータを並べて出力します。Data type には V_WString を選択しています。

3桁の整数を出力した「3keta」列と、3桁の整数を並べて出力した「6keta」の列ができました。

「6keta」列のデータを7で割るため、Select ツールを使って「6keta」列をInt32型に変更します。

Formula ツールを追加し、「6keta」列のデータを7で割ります。この後Filterツールを使ってデータの確認をするため、Data type には V_WString を選択しています。

結果を確認した限りでは割り切れているようですが、Preparation -> Filter を追加して小数点以下の数値が出力されているデータがあるか確認してみます。Basic filter に対して「Result」列に「.」が含まれているか確認します。「Result」「Contains」「.」と設定します。

T (True) の出力を確認すると、データが何もありません。

F (False) の出力に全て出力されています。

補足

もし割り切れない場合(小数点以下の値があった場合)に「6. Filterツールで「.」を含むか確認」で割り切れなかったデータを抽出できていたのか、念のため確認してみます。

「5. Formuraツールで7で割った結果を出力」を7ではなく3で割ってみると割り切れないデータがあります。

「6. Filterツールで「.」を含むか確認」の出力を確認してみます。T (True) の出力は以下の通りです。

F (False) の出力は以下の通りです。

最後に

今回は3桁の整数を並べて6桁の整数を作り7で割るという計算を試してみました。ちょっとしたネタ的なエントリですが、またネタがありましたらご紹介できればと思います。

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

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

alteryx_960x400