0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

追加で保存したデータの最新版を使う。

Last updated at Posted at 2024-08-17

はじめに

Domoを使い始めて、二ヶ月目。データをいろいろ集めてはいますが、日々、精進しております。

今回は、とあるK○t○neのデータを毎日最新版として取り込んでいますが、今後、変更箇所を見ていくこともあると思い、
取り込んだデータの履歴を全て取り込んでいます。

ですが、使うのは最新のデータだけ!

最新のデータだけ使えるようにするETLを紹介します。

対象者

ETL初心者

使ったデータ

今回、使ったデータは、こんな感じです。追加なので、これを数回取り込んで使ってみました。

image.png

データを追加で取り込むとは?

そもそもデータを追加で取り込むというのは、どういうことか!?

Domoには、データを取り込むときのバターンとして、「置き換え」と「追加」というモードがあリます。
「置き換え」とは、今入っているデータを全て削除して、データを置き換えます。
そのため、前のデータは無くなります。
それに対して「追加」は、前のデータは残しながら、データを追加で保存しておきます。

その設定は、DataSetを作るときに、アップデートモードというものがあり、
更新方法を、「追加」にすると、そのような動きになります。
M_二次判定結果_PROD_Higashi_-_Domo.png

データの追加の時のデータ構造

追加で保存されると、データが混ざってしまわないか、心配になりますよね。
そこはご心配なく!

追加でデータを取り込んだときには、【_BATCH_ID_】、【_BATCH_LAST_RUN_】の列が自動的に追加されます。

【_BATCH_ID_】には、取り込んだ時のグループ番号が入ります。初めて取り込んだら1、そこから取り込むたびに+1された数値が入ります。
【_BATCH_LAST_RUN_】には、取り込んだ時の時間が入ります。タイムスタンプ型なので秒まで格納されますが、取り込む時間がすごく掛かっても、同じグループ番号の時間は同じものが入るようです。

M_追加データ_RAW_higashi_-_Domo.png

ただデータが、どんどん積み上がっていくので、このままグラフにするとかは、加工するのは難しい状態です。

最新のデータだけ抽出する。

とりあえず使うデータは最新のデータだけでいいので、【_BATCH_LAST_RUN_】だと一番新しい時間、【_BATCH_ID_】だと一番大きいものが対象になります。

ではETLで作っていきます。

完成したETLはコチラ!

まずは、こんな感じでいけます。ひとつづつ説明していきます。

FL_M_最新データ_RAW_higashi.png

1.定数追加します。

はじめに【tmp_key】という列で、値は1を追加します。
これ見たら「何やっているの?」っという気持ちになりますが、最後までお付き合いください。m(_ _)m

FL_M_最新データ_RAW_higashi.png

2.分岐して、グループ化

グループ化するキーは【tmp_key】と設定
新しい集計列には【batch_max】とつけます。
新しい列は【_BATCH_ID_】の「最大」を入れることにします。

FL_M_最新データ_RAW_higashi.png

出来上がったデータをプレビューで見てみた。
そりゃそうだ!
【tmp_key】に1入れて、それでグルーピングしたら、一行になるよ!
でも【_BATCH_ID_】の最大の数値を手に入れることができた!

FL_M_最新データ_RAW_higashi.png

3.【_BATCH_ID_】の最大の数値を結合する。

「結合」を使います。
JOINタイプを「左外側」に設定して、元のデータを基本にしていきます。
結合条件は追加した【tmp_key】。。。。。1が入っているんだよなぁ。
出力列については【tmp_key】が重複しているので、どっちかを消します。

これでどうなるんだろう。。。。

FL_M_最新データ_RAW_higashi.png

FL_M_最新データ_RAW_higashi.png

データを見てみると、全ての行に【batch_max】の値が追加されています。

そっか!!!!

FL_M_最新データ_RAW_higashi.png

4.行フィルターで、【_BATCH_ID_】の最大の数値だけ残す。

全ての列に【_BATCH_ID_】の最大の数値である【batch_max】が入っています。
【_BATCH_ID_】と【batch_max】が同じ行だけ残せば、最新のデータだけにすることができます。

「行をフィルター」を使って、
フィルターをかける列は、【_BATCH_ID_】
比較タイプは、「等しい」
比較する対象は、「列からの値」で【batch_max】を指定します。

FL_M_最新データ_RAW_higashi.png

5.出力DataSetを使う。

出力DataSetを使って、最新のデータだけになったDataSetを使えることになります。
列を選択を使って、【tmp_key】【batch_max】などは削除してもらっても大丈夫ですが、省略します。

まとめ

スクリプト使ったりすれば、もっとシンプルにできるかもしれません。
もっと良い方法があれば、教えてください!

今回もお疲れ様でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?