はじめに
DomoのMagic ETLがメジャーアップグレードされ、新しいMagic ETLになりました。新しいデータ処理エンジンに加えて、従来のMagic ETLと同様に使いやすいグラフィカルインターフェースを搭載しています。新しいMagic ETLは、従来のMagic ETLとの互換性にも優れています。ほとんどの既存の変換データをスムーズにアップグレードできます。この新しいエンジンはMagic ETLの後継モデルです。従来のMagic ETLの提供は、近日中に終了する予定です。
新しいMagic ETLは、より優れたパフォーマンスと豊富な機能、より高い整合性を備えていますが、パフォーマンスを優先したため、一部の機能で従来のMagic ETLとの互換性が完全ではない場合があります。このドキュメントでは、新しいMagic ETLに切り替えた際に想定される、前バージョンとは異なる動作について説明します。今回のバージョンアップにより大幅に改善された機能を確認するために、できるだけ多くのデータを使ってお試しください。
ビデオ - 新しいMagic ETLにアップグレードする
新機能を使用する
この機能のご使用に興味がある場合は、カスタマーサクセスマネージャー(CSM)にお問い合わせください。
注記:この機能は、ご要望をいただいた場合に有料で提供いたします。
機能の有効化をリクエストするには:
-
Domoカスタマーサクセスマネージャー、テクニカルコンサルタント、またはAEにお問い合わせください。
-
担当のCSM、TC、AEの連絡先が不明な場合は、Domoのテクニカルサポートにメールsupport@domo.comでお問い合わせください。
機能によっては、事前にトレーニングが必要となる場合があります。
アップグレードについて
今回のバージョンアップでは内部的に大きなアップデートがありました。もしMagic ETLのパフォーマンス向上だけが目的だったなら、最新のMagic ETLをリリースする必要はなかったでしょう。しかし、開発チームはBeast ModeなどのDomoの各コンポーネントと同じレベルの高い機能性を新しいMagic ETLでも実現したいと考えました。私たちの目標の1つは、競合する列名を解決する際に、ユーザーによるマニュアル入力とMagic ETLによる自動入力という2つのメソッドを提供することでした。新しいMagic ETLは、従来のMagic ETLとは異なる方法で、結合行と追加行における名前の競合を処理します。従来のMagic ETLでは「id_1_2_1_1」のような名前の列がよくあり、データクレンジング機能の向上がいかに重要かを多くのお客様から聞いていました。もちろん、新しいMagic ETLの新機能を使用するか否かは、ユーザー自身が選択できます。
自動リネーム機能はほんの一例にすぎません。新しいMagic ETLは、Domo Beast Mode、SQLデータベース、スプレッドシートなど様々なソフトウェアに着目して開発された、200以上の機能を持つ新しいスクリプトシステムを備えています。スクリプトは新しいMagic ETLに革新的な進歩をもたらします。スクリプトシステムによって提供される機能は、従来のような多数のタイルによる構成をより簡潔に表現するだけではありません。時には、MySQL DataFlowを超える性能を発揮することもあります。スクリプトを使用して、列を所定の位置で編集したり、新しい列を追加したり(新しい[スクリプトを追加]タイルを参照)、[グループ化]タイルや[行をフィルター]タイルの一部として使用して複雑な集計やフィルター条件を作成できます。新しいスクリプトシステムで利用可能な、サポートされている関数の完全なリストはこちらで確認できます。
主な動作の変更
新しいMagic ETLでは、変換時の動作が従来のMagic ETLとは異なる場合があります。そのため「列が見つかりません」や「重複した列名」などのエラーが発生したり、微妙に異なるデータが出力されることがあります。混乱を避けるため、既存のDataFlowを新しいMagic ETLへ移行する時や、新しいMagic ETLで新規DataFlowを作成する時には、あらかじめ動作の違いを把握しておくことが重要です。
行をフィルター
NULL値は、比較関数によって異なる方法で処理されます。SQLおよび新しいMagic ETL DataFlowでは、nullとの比較の結果は常にnullであり、[行をフィルター]タイルによって誤った結果として処理されます。新しいMagic ETLでは、ほとんどの場合、nullはnullと等しくありませんが、nullはnullと等しくないわけでもありません。また、nullは0以下ですが、0以上でもあり、0と等しくもありません。[行をフィルター]タイルが参照する列にnullがある場合、関数や引数に関係なく、それらの行はすべてドロップされます。nullを適切に処理できる関数は、「is null」と「is not null」のみです。従来のMagic ETLでは、フィルターが「column = null」のテストを実行することもありました。このような場合は今後、同じ結果を得られないため、 このようなフィルターは「is null」演算子を使用するように変更する必要があります。
フローを従来のMagic ETLから新しいMagic ETLに切り替えた後、正常に実行されていても出力から行が欠落しているような場合は、この変更が原因である可能性があります。「is not equal to」関数を使用するときには特に注意する必要があります。「column <> 5」は、列の値が5の行のみを除外するように見えるかもしれませんが、実際には、上記の理由により、列にnullを含む行も除外します。次の表に、[行をフィルター]でのnullの動作の追加の例を示します。
テスト |
評価済みの結果 |
フィルターの有効性 |
---|---|---|
4 <> 5 | true | keep |
5 <> 5 | false | drop |
null <> 5 | null | drop |
null = null | null | drop |
null <> null | null | drop |
null is null | true | keep |
null is not null | false | drop |
5 is not null | true | keep |
5 is null | false | drop |
より複雑な方法でnullを処理するには、新しいスクリプトシステムを使用します。[行をフィルター]タイルは、スクリプトの評価をサポートする3つのタイル([グループ化]と[スクリプトを追加]が他の2つ)の1つです。IFNULL()関数は、フィルター式からnull結果を処理する場合に特に適しています。例えば、列「col」にnull値があり、「col」の値が5でない行をフィルターしてnullを保持する場合は、次の式を記述できます:IFNULL(col <> 5, TRUE)
null処理の他にも、フィルタースクリプトによって簡単になるシナリオは多数あります。従来のMagic ETLでは、以下の1つのスクリプトで、それぞれ複数の条件を持つ2つの個別の[行をフィルター]タイルが必要でした。
日付と時刻の解析
入力テキストを「日付」または「日付と時刻」の値に変換処理するための、日付と時刻の解析が大幅に変更されました。一般的に、新しいMagic ETLでは従来よりも厳密に解析が行われます。従来のMagic ETLで正常に解析されたテキストでも、新しいMagic ETLではエラーになる可能性があります。より厳密になった理由は、月と日を混同してしまうなど、値が気付かないところで間違って解釈されてしまうのを避けるためです。新しいMagic ETLは、正確な日付と時刻の形式の固定リストと、各国特有の多様な形式のリストを使用します(例:米国では「01/02/2020」は1月2日、その他のほとんどの国や地域では2月1日)。新しいMagic ETLが日付を解析できない場合は、列単位で[入力DataSet]タイルにカスタムフォーマットを指定できます。フォーマットの仕様については、「Java Date TimeFormatterクラスに関するOracleのドキュメント」を参照してください。
日付と時刻の演算
新しいMagic ETLでは、Domoの管理メニューで指定された会社のタイムゾーンをデフォルトとして日付と時刻の演算を実行します。従来のMagic ETLでは、日付と時刻の演算は、世界的標準時間である協定世界時(UTC)で実行していました。例えば、企業の所在地のタイムゾーンがアメリカ/デンバーで、日付と時刻の列で「日付の月」を使用している場合、協定世界時(UTC)ではなくデンバーのタイムスタンプを取得します。
新しいMagic ETLでは、[日付の演算]タイルのWEEK_OF_YEAR()関数も変更されています。日曜日を含む週が、その年の第1週となります。ここが従来とは異なる点で、従来のMagic ETLとBeast Modeでは曜日にかかわらず、その年の最初の週が第1週となります。
週番号の表示は[スクリプトを追加]タイルで調整できます。week()関数の2番目の引数(0から7までの整数)で週番号を計算できます。これらのモードについては「OracleのMySQLドキュメント」で説明されており、Beast Modeもそれに準拠して動作します。Mode 0(またはmode引数なしのweek())は、[日付の演算]タイルのweek_of_year()関数と同じ結果を返します。
結合
新しいMagic ETLの[データを結合]タイルには、大きな変更が2つあります。
- 重複する結合キー数の少ないテーブルを左結合にすることは重要ではなくなりました。従来のMagic ETLでは重複エラーが発生して「左の入力には、10,000を超える重複が存在することはできません。」というエラーメッセージが表示されましたが、新しいMagic ETLではこの問題が修正されました。
- 名前の競合は、ユーザーによる入力がないと解決できなくなりました。その代わり、[データを結合]タイルに名前の競合を解決するための設定を行うセクションが追加されました。このセクションへは、自動または手動で入力できます。競合する列名の変更に加えて、[データを結合]タイルの設定で列を削除することもできるようになりました。
行を追加(Union)
従来のMagic ETLでは、[行を追加] タイルに入る2つ以上の列の名前が同じで、データタイプが異なる場合、それらの列は結合されません。その代わりに、「ID整数」や「IDテキスト」のような名前で2つ以上の新しい列が作成されます。新しいMagic ETLでは、[行を追加]タイルで列名は変更されません。タイプが異なる列の場合、同じ列名を持つすべての列のデータに対して、可能な限り最適なタイプへの変換が行われます。例えば、ある列のタイプが「整数」で、別の列のタイプが「小数」の場合、列は「小数」タイプの列に結合されます。日付と小数のようにタイプが完全に互換性のない場合、結果の列はテキストタイプになります。この動作は、[行を追加]タイル設定の新しいオプションを使用して、より厳密な動作に置き換えることができます。より厳密な動作では、同じ名前を持つ2つの列で、列のタイプが異なる場合にはエラーとなります(実行に失敗する)。
その他の検討事項
従来のMagic ETLから新しいMagic ETLへのバージョンアップによる仕様変更だけでなく、新しいMagic ETLによる変換機能の向上についても理解することが重要です。従来のMagic ETLを使用していたユーザーが新しいMagic ETLを初めて使う場合は、ぜひ下記の操作を試お試しください。
- 新しい[スクリプトを追加]タイル ― 新しい[スクリプトを追加]タイルは200以上の関数をサポートしており、そのほとんどは新しいMagic ETL独自の関数です。初めて[スクリプトを追加]を使用する場合は、スクリプトエディターを展開して関数リストを参照してください。
- [入力DataSet]タイル ― 入力される列のタイプの変更、エラーやnullの処理方法の設定ができるようになりました。テキスト列のすべてのnullを空白の文字列として解釈することも可能です。
- 新しい[動的アンピボット]タイル ― 一部のシナリオでは、従来の[アンピボット](列を折りたたむ)タイルよりも合理的に動作します。ほとんどの列をそのまま残して一部の列のみをピボットするのではなく、一部の列を除くすべての列をピボットする場合は、この新しいタイルを使用することをお勧めします。
コメント
0件のコメント
サインインしてコメントを残してください。