見出し画像

Tableau Prep Tips集24 ー桁数の調整ー

Japan Preppin Data FamメンバーのPrep Tips集をご紹介します。
今回は、桁数の調整です。

顧客IDなど数値で規定されたIDデータで、”00012” などの “0” を使ってカウントしているデータが、データを接続した際に “12” と表示され、 “000” の部分が表示されずに消えてしまい困ったことありませんか?
末尾に “ “ の半角スペースを入れて文字列の桁数を調整する例も同様でしょうか。

実務であるあるの、ID類で良く出くわす事例。文字列で扱うべきところが、数値扱いとなり、その修正(メンテ)をするのにちょっと手間がかかります。

 ・型変換で「数値型」と「文字列型」の相互変更
 ・文字列の計算を実施して調整
するフローを「決まり手」として入れておけば、ルーティン作業で処理が出来ます。
実務でお目にかかる、データの最初と末尾の部分で桁数を調整する事例を2つの事例で対処方法をご紹介します。

なお、Excdelでも同様な処理を実施することも多い方もいらっしゃるかと思います。PrepとExcelの「決まり手」の違いなどを見比べて頂いても、実務で役立つケースが多いと思います。

Prep Tips (44) : 桁数の調整

1)IDなどの数値

(A) 消えてしまう 先頭の "000 " を、データ接続時に復活!

具体的な例で見てみましょう。
下例は、5桁で規定された社員IDになります。1番から順にIDが付けられていますが、番号が若いIDは先頭に "0" をつけたデータになっています。
データはシステム的に文字列として扱われています。

Excelで表示した [社員ID] データ
(Excelのファイル形式)

Prepへデータ接続をした時点で、データがCSVなどのテキスト形式の場合は、数値のデータは数値型として認識されるのが一般的です。前述の ”00012” などのデータが、”12” と表示されてしまうケース。
先頭の “0” が全てなくなってしまい、'0' を補う処理を実施しなければなりません。

CSVファイルで [社員ID] をデータ接続した例
数値型で読み込まれており、先頭の "0" が無い

ここで役立つのが、型変更の作業。
IDデータとしての管理で、先頭の “0” を確実にデータとして認識させるために、データ型を「文字列」として処理する必要があります。データ接続の作業時に型変換の対処が出来ます。

CSVファイルをデータ接続し、「#」のマーク部分で右クリックで
表示されるメニューから、[社員ID] を文字列に型変換する
文字列への型変換で、先頭の “0” 表示される

データの型は、フローの作業途中で変更するよりも、フローの最初で、出来れば
データ接続時に「文字列」に変更しておくことをお勧めします。
フローの最初の作業でデータ型をしっかり規定しておけば、後々の作業での間違いが発生する可能性を大きく減らすことが出来ます。

(B)それでも "0" が出ない、計算式で文字列を調整する

データによっては、データ接続時点で「文字列」に型変換しても、データで先頭の “0” が表示されないケースも多く見られます。
ここで役立つのが、文字列の計算で調整する作業です。

前述の ”00012” となる5桁のデータで、先頭の “0” が無くなってしまっている場合の対処方法です。

Prepでデータ接続後に型変換で文字列にしても
先頭の “0” が無くなってしまっている場合

読み込んだ時のデータ表示は、”00012”では “12” となっています。これに “000” と “0” を先頭に加える作業は、次の文字列計算を実施します。データフィールドとして扱いたいデータの桁数を基準に文字列の計算式を利用します。

計算過程

[社員ID 調整]
'00000' + [社員ID]

ここでは5桁のデータに揃えるため、"0" を5つ先頭に加える

[社員ID 調整後]
RIGHT( [社員ID 調整] ,5)

"0" を先頭に加えたデータから、右寄り5文字を撮出す

上記の計算式を、まとめて1つにすると次の様に式をシンプルにすることが出来ます。

[社員ID 調整(1式で)]
RIGHT(
     '00000' + [社員ID]
     ,5
)

上記例は5桁のデータ事例ですが、桁数が変わった場合は
 ・文字列計算で加える ”0” の数を桁数と同じにする
 ・RIGHT関数で右から取り出す文字数を桁数と同じにする
ことに変更することで、どのような桁数にも対処可能です。

利用するIDなどのデータで桁数が決まっている際は、この処理での “0” の数を桁数に合わせて調整しておけば、ツーティン処理の作業として利用出来ます。
処理内容を「決まり手」として必要時にフローの中に仕込んでおけば、作業の効率化が図れます。

なお、上記の操作は “0” の数を桁数に合わせて直接記載する方法になりますが、数値計算として  “0” を加える方法もあります。
次の(C)の例もご参照頂き、処理のし易い方法で対応してみてください。

(C) 桁数を指定して自動調整(パラメーターを使う)

利用するIDのデータ数が少なく、桁数も仕様で決まっている(変更が無い)場合は、(B)の対応で十分利用が出来ますが、場合によってはデータの桁数を適宜変更して作業をするケースも想定されます。

利用するデータの桁数に合わせて、”0” の数とRIGHT関数で取り出す文字数を調整する作業に関し、Prepでパラメーターを利用して桁数指定をすることで桁数変更作業が容易に行うことが出来ます。

下記に事例を示します。データは、Preppin' Data 2024W52のInputデータを利用しています。
最初に桁数を指定するパラメーターを作成します。ここでは、桁数を5桁に設定しています。

桁数設定用の [Number of Digits] パラメーター

RIGHT(
     STR( 10^ [Number of Digits]    // パラメーターの桁数を10の乗数として
                                                           // 文字列で利用するためにSTR関数を併用
     + [ID]
     ,  [Number of Digits])                // パラメーターの桁数を取出す文字数に利用

パラメーターを利用した、”0” を加える調整例
調整後のデータ例

必要に応じて、利用してみてください。

2)末尾文字列のスペース桁調整

(C) スペースを入れた文字列に別の文字列を加える

実務で見かける桁数調整のもう一つの例です。
文字列の末尾側を半角スペースなどを入れて桁数調整するケースになります。具体的な事例として、文字列で扱われる管理データが2種あり、2種のデータを繋げる際に先頭側のデータ末尾にスペースを入れて桁数を揃えるものです。

具体的に見てみましょう。

[管理データ A] と [管理データ B] の2つのデータがあり、それらを繋げて最終的なデータにします。
[管理データ A] は、文字数が異なるデータが混在しています。
このデータを [管理データ B] に繋げる前に、25桁にデータを揃える作業をします。末尾に半角スペースを必要数入れて桁数揃えをした上で、[管理データ B] を繋げます。

処理前のデータ例
Prepへデータ接続後(データ型を文字列にしています)

[管理データ A] の桁揃えは、LEFT関数を利用します。この例では、” “ (半角スペース)を25個データの後ろに加えて、先頭から25文字を取出します。

LEFT(
     [管理データ A] + SPACE(25)     // 半角スペース25個を末尾に加える
     ,25
)

SPACE関数で半角スペースを25個データの後ろに加えて、先頭から25文字を取出す例

2つのデータを繋げた後のデータになります。
桁数が揃っていることが分かり易いように、Prep処理後のデータを出力し、Excelでプロポーショナルフォントを使わずに表示する様にしています。
この例では、桁揃え後のデータ数は、30桁になっています。

 [管理データ A] の末尾に半角スペースを加え、
 [管理データ B] と繋げる処理後のデータ

この事例は、Prepで処理したデータをTableau  Desktopで利用するためには利用せず、処理したデータをITシステムに送り利用する業務で使っているものになります。
文字の桁揃え処理をPrepで「決まり手」として定型処理としておくことで、都度行うデータ処理を定型化させ、業務時間の短縮などの効果を捻出できます。
費用対効果を数値で示せる例としても、参考にして頂ければと思います。

まとめ

多くの方から、文字列データの桁数揃えの作業方法を知りたいとのお話を伺いました。文字列データの桁数揃えは、地味ですが実務で良くある利用価値のある処理方法です。

また、Tableau Desktopでのグラフ、ダッシュボードでのデータ利用だけでなく、他のシステムで利用するデータ提供のためのデータ処理においても同様な作業を行うケースがあります。
セルフBIのデータ加工ツールとして、Prepの良さを改めて認識頂ければと思います。

いいなと思ったら応援しよう!