見出し画像

Tabeleau Prep の「新しい行」でデータをn倍する

概要

Tableau Prepを使って「データを増やす」方法を考えたことがあったので、そのメモです。

どういうケースかというと、例えば以下のようなデータがあった時に、各行を [N] 列に入力している値の数だけ、複製したいような場合です。

サンプルデータ
(Tableau サンプル - スーパーストア.xls を元に作成)

1行目のデータだと同じデータを30行作りたい、2行目は20行、3行目は50行・・という感じ。

Tableau Prep を使う場合は、「新しい行」という機能が使えそうです。その名のとおり、元データにはない行を生成できる機能です。

[新しい行] を使用すると欠落している行を生成することができ、必要な結果が得られるように構成オプションを設定することができます。

新しい行は、数値 (整数) または日付値を持つフィールドに対して生成できます。構成オプションは次のとおりです。
・1 つまたは 2 つのフィールドの値を使用して行を生成する
・フィールド内のすべてのデータを使用するか、値の範囲を選択する
・結果を含む新しいフィールドを作成するか、既存のフィールドに新しい行を追加する
・新しい行を生成するときに使用する増分 (最大 10,000) を設定する
・新しい行の値を 0 または Null に設定するか、前の行から値をコピーする

Tableau Prep ヘルプ https://help.tableau.com/current/prep/ja-jp/prep_new_rows.htm

ただ、「新しい行」には、直接任意の値を指定してその分のデータを生成するようなオプションはありません。
そこで、今回はダミーの [開始日] と [終了日] という2つの日付フィールドを作成し、「新しい行」でその2つの日付の範囲を埋めるようなかたちで、データをn倍させてみました。

やりたいことのイメージは、ヘルプの「例2」の図が近いです。
ヘルプの例では新しい行の値をNullにしていますが、新しい行の値を「前の行からコピー」するというオプションもあるので、今回はこちらを利用していきます。

Tableau Prep ヘルプ 「シーケンシャル データのギャップを埋める」 例2
https://help.tableau.com/current/prep/ja-jp/prep_new_rows.htm

手順

具体的な手順は、以下のとおりです。

1)Tableau Prep Builderに対象データを読み込ませます。

データの読み込みと確認

2)次にダミーの [開始日] を作成します。開始日はいつでもよいのですが、ここでは「TODAY()」を使用しました。

[開始日] の作成

3)ダミーの [終了日] を作成します。終了日を「開始日 + [N]日 - 1日」で計算するのがポイント。

[終了日] の作成
DATE(DATEADD('day',[N]-1,[開始日]))

4)「新しい行」ステップを追加し、キャプチャのように設定します。
[開始日] ~ [終了日] の範囲で新しい行を生成することで、[N] 列の値分、データが複製される、という寸法です。
([終了日] を [開始日] の [N]-1 日後として計算しているので。)

新しい行の作成

5)これで完成です。[行ID] ごとの行数を確認すると、各行が [N] 列に入力した値の分、生成されているのがわかります。

[行ID] ごとの行数がn倍されている
Tableau Prep から出力したデータ (抜粋)

まとめ

データをn倍するにあたって、Tableau Prep の「新しい行」を利用してみました。ポイントはダミーの [開始日] と [終了日] を作成することくらい。思ったより簡単にデータを増やすことができました。


この記事が気に入ったらサポートをしてみませんか?