今回は、転置後に必要な項目がなくて困ったときの対処法をご紹介します。
転置ツールは非常に便利です。ただ、転置後に計算をしようとして項目がなくて困ったことはありませんか?
完全なデータソースを用いてワークフローを組んでいるときはあまり問題にならないのですが、不完全なデータが来たとき、例えば月末データを用いて作成したワークフローを、月初に売上がまだ十分ではなく、例えばいくつかの品目がまだ売れておらず売上を計算しようとした際に抜ける項目があるかもしれません。このような場合に転置後に必要な項目がなかったり、ということでエラーが発生、ということは往々にして発生します。
もう少し具体的に見ていきましょう。
ある小売店で、洗濯用洗剤と台所用洗剤の販売割合を見たい、という要望があるとします。
この場合、計算式として、
[洗濯用洗剤]/([洗濯用洗剤]+[台所用洗剤])*100
となるかと思います。つまりストレートに作ると、以下のように売上データをクロスタブで横持ちにして計算を行います。
これにより、以下のような結果が得られます。
しかし、これ、、、月初などでデータが溜まっていない場合、例えば台所用洗剤がまったく売れてないような場合、クロスタブで項目自体が生成されないため、以下のようにエラーがでます。
ここで、フォーミュラツールを見てみましょう。確かに「台所用洗剤」が黒色になっており、フィールドとして認識されていません。
このような場合についてのソリューションを2つご紹介します。
ソリューション
その1.ヘッダのみ追加する
クロスタブの後に、ヘッダをユニオンで結合しておくことで項目を強制的に割り当てます。ただし、レコードが存在しない項目については、中身がNullになるため、フォーミュラツール等で0に書き換える必要があります。
ワークフローは以下のとおりです。
ヘッダとしては、テキスト入力ツールで以下のようなものを追加します。つまり、フィールド名のみ入力したようなデータです。
これを元のデータとユニオンしておきます。
その後、フォーミュラツールでは、レコードがない場合に値がNullになるので、0を変わりに入れておきます。項目が多いような場合は、複数フィールドフォーミュラが楽ですが、2つくらいならまぁフォーミュラツールでも良いかと思います。
これで無事に結果が得られます。
その2.0データを追加しておく
こちらは、クロスタブの前に、強制的に0レコードの項目を追加しておく方法です。0レコードの場合、レコードの合計などには影響を与えませんが、レコードのカウントに影響を与えることに注意しましょう。
ただ、項目を0で適当に突っ込んでおけばいいので、楽な方法にはなっています。
ワークフローとしては以下のようになります。
ヘッダと書かれているテキスト入力ツールは、以下のように各項目に0を入れたデータです。0なので数値の合計などには影響を与えません。ただし、カウントなどを使う場合は、影響を受けてしまうので、1つ目の方法が向いています。
それ以外のところは特に何も変えていません(フォーミュラツールも特に何も触る必要はありません)。
サンプルワークフローダウンロード
※本ワークフローは、「データサイエンティスト協会スキル定義委員」の「データサイエンス100本ノック(構造化データ加工編)」を使用しています
次回
次回は、結合ツールのTipsです。
コメント