
Adrenaline推し、Domoデータ変換の使い分け【Domo buddies勉強会】
Domoの知られざるおすすめ機能 "Adrenaline(アドレナリン)"をご存じですか。Adrenalineとは、"Adrenaline DataFlow"の通称で、サイズの大きなDataSetをDomoで処理するための大規模で高性能なデータ変換ツール(Adrenalineエンジンをベースとした、ドーモの自社開発ツール)です。
本ブログでは、先日開催のDomo buddies勉強会(コミュニティ主催による月次イベント)にご登壇された、Domo buddies 技術分科会のリーダーである本田さんによる「Domoデータ変換の使い分け(Adrenaline推し)」をご紹介します。データ変換の種類や、実際の検証結果、各データ変換のメリット&デメリット、Adrenalineお役立ちTipsをプレゼンいただきましたが、Adrenalineお役立ちTipsについては別ブログ(「AdrenalineのTIPS 3選」をココから読む)にてご紹介することにしました。
限りなく当日のニュアンスを伝えられるように、勉強会の内容の一部分をそのまま、ドーモのコミュニティマネージャーの西尾がお届けします。
Domoのユーザーコミュニティ”Domo buddies”では、毎月Domoユーザーによる勉強会を開催しています。今後のDomo buddies勉強会の開催予定一覧はこちらをご覧ください。
1.登壇してくれたbuddies:本田 由佳さん
エイベックス・デジタルの本田です。Domo歴は7年目になりました。推し機能は本日ご紹介するAdrenalineです。もともとはWebエンジニア・アプリエンジニアでしたが、その後データを触る機会が増え、ご縁があって現在のエイベックスに入社しました。
エイベックスでは、音楽CDや配信、ライブ、タレントの育成やアーティストのマネジメント、アニメ、舞台、映画、ファンクラブ、チケット販売、EC等エンターテイメント全般において、才能を見つけ、そこから生まれる感動と体験を世の中に届けるビジネスをしています。
2.Domoのデータ変換
早速ですが皆さん、Domoのデータ変換には何を使っていますか?
おそらく会社によって異なるとは存じますが、おそらくMagic ETL 2.0 、MySQL、Redshift、Adrenalineが主流ではないでしょうか。
「Magic ETL 2.0」とは?
DomoのMagic ETLをアップグレードしたもの。Magic ETLと比較し、Magic ETL 2.0ではデータ処理エンジンが強化され、迅速かつ効率的に多くのDataFlowを実行できるようになりました。性能や機能の差が大きいがゆえ、従来のMagic ETLと区別するためにアップグレードしたMagic ETLのことを「Magic ETL 2.0」と呼んでいます。
※参考:Domo公式KnowledgeBase 「新しいMagic ETLの新機能」
(前提)
ここでご紹介する内容は、あくまでドーモが提供するDomoインスタンス内における、MySQL・Redshift・Adrenalineデータ変換が対象です。前処理を他プラットフォーム(BigQueryやRedshiftなど)にて実施する場合は対象外です。
2.1.データ変換の必要性
改めて、釈迦に説法ではありますが、データ変換の必要性に関してまず振り返りましょう。
Domoでは巨大なデータセットを使うと、カードの表示時間がかかりますよね。やはりDomoは大量のデータを表示させるためのツールではなく、あくまでもサマリ値を表示させるためのツールなので、適切なデータ量で表示させるためにデータの変換が必要になってきます。
2.2.各データ変換の違い
主なデータ変換の特徴を大雑把にまとめると、以下のようになります。
● Magic ETL 2.0は、ドラッグ&ドロップで実装でき、SQLを使わないためエンジニアでも扱いやすい。
● MySQLは、そのままSQLが書ける。
● Redshiftは、MySQLに比較してパフォーマンスが良い。
● Adrenalineは、Redshiftに比較してさらにパフォーマンスが良い。
ただ結局、どれが一番速く、どれが一番よいのか?という点が皆さんが気になるところだと思います。
3.結局、どれが速いの?
そこで今回、実際にデモで検証してきました。
まず、①ローデータの10億行のダミーデータを作りました。「アドレス」や「都道府県コード」を持つデータが10億行入っています。また「都道府県コード」を持つ、②都道府県マスタ(47行)も用意。
この2つを「都道府県コード」をキーに結合させて、サマる、というデモのDataFlowを作ってきました。①ローデータ(10億行)と②都道府県マスタ(47行)を結合させると、全部で551行になりました。

これを各データ変換で実行してみると、どれくらいの速度になったかというと・・・。
4.Adrenalineが爆速
4.1.検証結果
結果、Magic ETL 2.0は 【約40分間】、MySQLは【約14時間半】、Redshiftは【約2時間】。この3つの中では正直Redshiftが一番早いのではないかと予想していたのですが、意外とMagic ETL 2.0 も速いことがわかりました。おそらくMagic ETL であればここまで速くならなかったかもしれませんが、Magic ETL 2.0ではここまで変わるんだというのは驚きでした。
さて、ここで皆さんが一番期待しているのがAdrenalineだと思います。アドレナリンはどんなものだったかというと、Adrenalineは爆速で【51秒】でした!

4.2.Adrenalineが爆速である理由
なぜAdrenalineがこんなに早いのかをご説明します。下記スライドの左側がMySQLのDataFlowの結果で、右側がAdrenalineの結果です。
入力DataSetの部分を見てください。MySQLは入力DataSetの読み込みに【7時間】もかかっていますが、Adrenalineは【0秒】となっています。Adrenalineはそもそもの入力DataSetの読み込み時間がありません。これが爆速の秘訣の一つです。また、出力DataSetの部分にも注目ください。MySQLは変換に【7時間半】かかっていましたが、Adrenalineはおおよそ【1分】程度でした。
つまりMySQLとAdrenalineを比較すると、入力DataSet読み込み時間0秒と、そもそも搭載されているエンジンの優秀さが、爆速の秘訣だといえます。

4.3.補足(DataFlowの実行環境)
ここで、DataFlowの実行環境に関する補足です。
DataFlowを作る時、Magic ETL 2.0やMySQL、Redshiftに関しては、DataSet環境からDataFlow環境にDataSetを一回コピー(「1. inputのコピー」)させています。そしてこのDataFlow環境で加工(「2. 加工」)し、またOutputをDataSet環境にコピーを戻し(「3. outputのコピー」)、最終的にカードに反映させる、という仕組みとなっています。
一方Adrenalineは、そもそもinputやoutputをコピーする必要がないため、入力DataSetの爆速読込みが可能となっています。

5.各データ変換のメリット&デメリット
これらの結果と個人的主観を踏まえ、メリット&デメリットをまとめました。
5.1.メリット&デメリット
Magic ETL 2.0に関しては、無料であること、エンジニアでない方も扱いやすい点がメリットかと思います。ただ、SQLで書けば一発で済むところをMagic ETL 2.0だと複数処理する必要があり、細かい処理に関しては少々デメリットな面もあるかと思っています。
My SQLに関しては、ストアドプロシージャが使え、Indexも自由に貼れます。しかし上述の比較表の通り、やはり処理時間が遅かったり、window関数を使えないといった、細かい点が気になります。
Redshiftに関しては、ストアドプロシージャが使えますし、Indexも自動で貼られますし、window関数も使えます。ただ、日本語カラムが扱いにくいという点があります。というのも、読み込みが日本語だった場合、セレクトしてみると、日本語がアンダーバーに文字化けてしまうので、セレクトした後も日本語として扱いたい場合はもう一度変換処理を行う必要があるのが気になるところです。そもそも英語で書けばいいのですけどね。。。
Adrenalineに関しては、処理時間が爆速というところが何よりもメリットです。window関数も日本語カラムも使えます。ただし、やはり有料である点と、ストアドプロシージャが使えません。また、さきほどのデモのような10億行のDataSetを551行にぎゅっとするデータ変換は得意ですが、inputとoutoputが同じ行数の場合だと、そこまでのスピードは出にくく、むしろ出ません。また、対応している関数がMySQLやRedshiftよりも少なめです。
5.2.個人的な使い分け
これらを踏まえて総合的に個人的な使い分けをまとめると、
Magic ETL 2.0 は、エンジニアでない方向け。PIVOTの縦横変換等を利用するときはSQLで書くと非常に長くなり面倒なので、そういう場合もETLを使います。
MySQLは、パフォーマンスを自由に設定したい場合に利用します。
Redshiftは、複雑な加工をそこそこのスピードで実行したい場合に利用します。
Adrenalineは、とにかく爆速変換したい場合に利用します。関数によっては他のDataFlowとの併用が必要かもしれません。

6.AdrenalineのTips
ここまででAdrenalineの良さは伝わったのではないかと思います。さてここでAdrenalineのTipsをいくつかご紹介したいと思います。
※AdrenalineのTipsについても当日ご紹介してくださったのですが、少々長くなってしまったので、下記ブログに分けてご紹介することにしました。
ブログ「Adrenaline Tips 3選」
https://note.com/domo_official/n/n01d4173958f1
7.まとめ
データ変換は状況に応じた使い分けが大切です。 前処理を他プラットフォームで実施したり、臨機応変にデータ変換を組み立てるのがよいかと思います。保守性を踏まえて同じデータ変換を選択する場合もあると思います。
また、データ変換の選択以外にも変換処理の方法やインデックスの貼り方によっても速度差が出てきますので、メンテナンスは随時必要です。
もし、今データ変換の処理時間にお悩みの場合は第三の選択肢としてAdrenalineを視野に入れてみてもよいかもしれません。デフォルトでは有効になっていないため、ご興味のある方はドーモの営業チームに相談してみるのもいいかと思います。新たな選択肢として受け入れ、明日からの皆さんの業務が少しでも楽になってもらえたら幸いです。
以上、ありがとうございました!
※最後に
発表を聞いていたbuddiesからは、このセッションの時にリアルタイムにチャットで沢山の反応を頂きました。

さて、月次で開催されているDomo buddies勉強会では、ここには書ききれない充実したセッションが沢山発表されています。是非、皆さんも参加してbuddiesの登壇をリアルタイムできいてみてください。新たな発見や刺激をもらえると思います。
Domoのコミュニティでは毎月本ブログでご紹介したようなDomoの使い方や事例の勉強会を開催しています。
▼お申込みはこちら(Domoユーザー限定)▼
https://www.domo.com/jp/campaign/domo-buddies