はじめに
Magic ETLインターフェースの[DataSet]タブには、3種類のタイルがあります。- 入力DataSet
- 出力DataSet
- ライトバック

- クエリDataSet
DataFlowとPersonalized Data Permission(PDP)
PDPポリシーが有効な状態で入力DataSetを使ってDataFlowを作成する場合は、以下の条件が少なくとも1つ満たされていないとDataFlowに不具合が発生します。- 自分自身に「管理者」セキュリティプロフィール、または「DataFlowを管理」の許可をもつカスタマイズされた権限がある。
- そのDataSetの所有者である。
- DataSetの「全ての行」ポリシーに自分のユーザーアカウントが追加されている。これにより、DataSetのすべての行にアクセスできます。
DataFlowに入力DataSetを追加する

- Magic ETLを開きます。
-
左側レールの**[DataSet]から[入力DataSet]タイルをキャンバス**にドラッグします。キャンバスの下にタイルエディターが開きます。

- タイルエディターで[DataSetを選択]を選択して、DataFlowの入力DataSetを選択します。
注記: Magic ETLで使用できる最大列数は1,500です。



[入力DataSet]タイルを設定する
DataSetの詳細を表示する: タイルエディターの**[詳細]**タブには、DataSetの名前、所有者、更新日、列名とタイプなどの情報が含まれます。
- **[入力DataSet]**タイルをキャンバスにドラッグして、タイルエディターを開きます。
-
タイルエディターで**[DataSetを選択]を選択します。表示されるモーダルで、既存のDataSetを選択するか、[新規作成]**を選択して新しいDataSetを使用します。

-
タイルエディターの**[設定]タブの[データ選択]**ドロップダウンで、以下のいずれかを選択します。

- [全て](デフォルト) — DataSetからすべての行を読み込みます。
- [新規] — 最後に正常に実行された後にDataSetに追加された新しい行を読み込みます。
注記: このオプションを選択した場合は、データ更新方法を[置き換え]ではなく[追加]に設定する必要があります。
-
[バッチでフィルター] — 作成日または名前(パーティションの場合)にもとづいて読み込むバッチを選択できます。
このオプションを選択すると、 **[バッチでフィルター]**エリアが表示されます。 データが処理された時期とカスタマイズされた数式のどちらにもとづいてバッチにフィルターをかけるかを指定し、日付パラメーターを選択します。例:処理済みデータ(過去7日間)。
- (オプション)入力DataSetがパーティション分割されている場合は、**[パーティション列名]**フィールドを使用してパーティション名を公開できます。
-
**[データ処理]**エリアで列データタイプを変更します。これにより、入力データに発生する可能性のあるスキーマの変更によってDataFlowが破損するのを防ぐことができます。

-
右側の **[設定を変換]を使用して、列内の[不正な値]や[NULL値]**などについて、各列の特別な処理を設定します。


[出力DataSet]タイル

[出力DataSet]タイルを設定する
[出力DataSet]タイルを設定するには、以下の手順に従います。- DataFlowのすべてのタイルが接続され、設定されていることを確認します。
- 左側パネルの**[DataSet]の[出力DataSet]**タイルをキャンバスにドラッグして、接続します。
- タイルエディターでタイルの名前を変更します。これは、Data Centerに表示される出力DataSetの名前です。
- **[更新方法]**ドロップダウンを使用して、更新されるデータの処理方法を選択します。Domoでの更新方法については、こちらを参照してください。

DataSetの詳細を表示する: DataFlowが少なくとも1回実行された後は、タイルエディターの**[詳細]**タブに、出力DataSetに関するすべての情報が含まれます。
- [DataSetをクラウドに追加] ドロップダウンを使用して、データを書き込む場所を選択します。
- クラウドでデータを保存するデータベース の名前を入力します。
- データベースでデータを保存するスキーマの名前を入力します。
- スキーマ内で使用する表 の名前を入力します。
注記:
- **[DataSetをクラウドに追加]**するオプションは、クラウド統合を使用していて、ライトバック用に設定された統合がある場合にのみ利用可能です。
- [データベース]、 **[スキーマ]、****[表]**フィールドは、Cloud Amplifier統合がクラウド(現在はSnowflakeのみ利用可能ですが、ほかのエンジンもまもなく利用可能になる予定です)内の位置パラメーターをサポートしている場合に利用できます。
[クエリDataSet]タイル
[クエリDataSet]タイルを使用すると、入力設定プロセスの一環としてDataSetに対してクエリを記述できます。クラウド統合を介してアクセスされる大きな表の読み込みは、基盤となるクラウドデータウェアハウス(CDW)のリソース制限によって遅延する場合がありますが、[クエリDataSet]タイルを使用することで効率性が向上します。このタイルを適切に使用すると、次のようなエラーメッセージが解決されることがあります。- クエリのパーティションキー
-
読み込み
[クエリDataSet]タイルを設定する
[クエリDataSet]タイルを設定するには、以下の手順に従います。-
Magic ETLで、左側のサイドバーの**[DataSet]**セクションを展開し、[クエリDataSet]タイルをキャンバスにドラッグします。
注: これは、DomoのDatabricksユーザーのみ利用できます。
- キャンバスの下のタイル構成パネルで、[DataSetを選択] ドロップダウンからDatabricks DataSetを選択します。
- Magic ETL DataFlowに取り込みたいデータを識別するクエリを記述します。
注: このクエリはSELECTクエリのみである必要があり、CTE(common table expressions)は使用できません。
Query Partition Key Databricksテーブルでこの値を決定するための推奨プロセスが下に表示されます。
5. [# of Loads] セクションを設定しますか?
パーティションキーを選択する(Databricksの推奨プロセス)
パーティションキーを選択する場合、列の値ごとに行数がより均等に分散されているほうが望ましいです。Databricksでは、パーティションキーを選択し、最大のバッチが4GB以下になるように読み込みの数を定義することを推奨します。これを行うには、次の手順に従います。-
Databricks UI内で、または次のようにクエリを実行して、表の全体的なサイズを確認します。
DESCRIBE DETAIL <catalog>.<schema>.<table> - sizeInBytesを2^30=1024^3で割ってGBに変換します。
-
次のように、推奨される4 GBで除算して、必要な分割数の暫定値を取得します。
divisions = ( sizeInBytes / 2^30 ) / 4
注: これは中間的な計算であり、必要な読み込み数として解釈されるべきではありません。
- 表の合計行数を見つけます。
-
次の式を使用して、最大バッチの上限である4GBを占める表の行数を推定します。
max_rows = row_count / divisions -
これで、どの列をパーティションキーとして使用するかについて評価を開始できます。列にNULL値を含めることはできない点に注意してください。
次の式を使用して、候補となる列に存在する個別の値の数を検索します。
SELECT COUNT( DISTINCT <column> ) AS distinct_count
FROM <table>;distinct_countの値は後の計算で使用します。 -
候補となる列でパーティション分割した場合のデータの偏りを、次の式を使って最大行数を確認して評価します。
SELECT <column>, COUNT(*) AS row_count
FROM <table>
GROUP BY <column>
ORDER BY row_count DESC;バッチは、N個のパーティションキー値に関連付けられたすべての行で構成されます。最悪の場合、最大のバッチは、N個の最大行数を持つパーティションキー値で構成されることになります。累積合計は、次のクエリで表されます。WITH grouped_counts AS (
SELECT <column> , COUNT(*) AS row_countFROM <table>
GROUP BY <column>)SELECT <column> , row_count, SUM( row_count )
OVER (ORDER BY row_count DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS cumulative_row_count
FROM grouped_counts
ORDER BY row_count DESC;例えば、日付<column>がパーティションキー候補として評価されているとします。さらに一歩進みます。先ほど計算した最大行数(4GBにもとづく)の制限を満たしつつ、バッチに含めることができるこの <column> の固有の値はいくつですか?必要なクエリは次のとおりです。WITH grouped_counts AS (
SELECT <column> , COUNT(*) AS row_countFROM <table>
GROUP BY <column>) ,ranked_counts AS (SELECT <column> , row_count , SUM( row_count )
OVER (ORDER BY row_count DESC
ROWS BETWEEN UNBOUNDED PRECEDINGAND CURRENT ROW
) AS cumulative_row_count
FROM grouped_counts)
SELECT COUNT(*) AS max_column_values
FROM ranked_counts
WHERE cumulative_row_count < max_rows;
max_rowsを置き換えます。次に、上記のクエリを実行して整数の結果max_column_valuesを取得します。
8. この候補となる列をパーティションキーとして使用する場合は、手順6および手順7の結果を用いて、最大読み込み数が確実に4GB未満になるよう、以下のように端数を切り上げて必要な読み込みの最小値を計算します。
“# loads” >= distinct_count / max_column_values
4GB未満にするために必要な読み込み数は、選択したパーティションキーの列によって異なります。読み込み数を少なくするには、値が表全体に均一に分散される列を選択します。
[ライトバック]タイル

[ライトバック]タイルを設定する
[ライトバック]タイルを設定するには、以下の手順に従います。- [入力DataSet]タイルの代わりに、[ライトバック]タイルをキャンバスにドラッグします。
- [ライトバック]タイルの名前を変更し、
[編集] を選択して出力するDataSetの名前と説明を指定します。 - (オプション) [追加オプション] メニューを選択し、 **[更新方法]**を選択して、データを置き換えるか(デフォルト)、追加します。
- **[ライトバックを設定]**を選択して、使用するWritebackコネクターを選択します。
- ほかのタイルを[ライトバック]タイルに接続してDataFlowを完了し、[出力DataSet]タイルで終了します。
[固定入力]タイル
このタイルを使用して、変換、プロトタイプロジックの検証、意味のあるプレースホルダデータによる出力の実証、入力DataSetが利用できない場合のDataFlowの作成を行うことができます。 Magic ETLのオーサリングキャンバスの左パネルにあるDataSetで、[固定入力]タイルを見つけます。
注: [固定入力]タイルでAI機能を使用するには、インスタンスでAIサービスを有効にする必要があります。AIサービスが有効になっていない場合でも、データを手動で入力したり、値を貼り付けたり、ファイルをアップロードしたりすることはできます。
[固定入力]タイルに手動でデータを入力する
データを手動で入力するには、次の手順に従います。- 固定入力タイルを[DataSet]セクションからキャンバスにドラッグします。
- [新しい列のヘッダー]フィールドに列名を入力します。
- 各列名の左側で小さなテキストを選択して、データタイプを設定します。
- 表にデータを直接入力します。
- (オプション) 別のソースのデータをコピーして、行と列に貼り付けます。

[固定入力]タイルにファイルをアップロードする
ファイルをアップロードするには、次の手順に従います。- [固定入力]タイルを[DataSet]からキャンバスにドラッグします。
-
右下の**[データの生成/アップロード ]** ボタンをクリックします。

-
モーダルで、**[ファイルをアップロード]**タブをクリックします。

- ファイルをドラッグアンドドロップするか、 [ファイルをアップロード] ボタンを選択します。
-
ファイルにヘッダー行を含めるかどうかを指定し、[インポート]ボタンを選択します。
データが設定パネルに表示されます。列の追加や値の編集を行うことも、そのまま使用することもできます。

AIを使用して、[固定入力]タイルのサンプルデータを生成する
AIを使用してサンプルデータを生成するには、次の手順に従います。 また、単一の列のAIデータを生成する場合は、スパークルアイコンを- [固定入力]タイルをキャンバスにドラッグします。
- [データの生成/アップロード ] ボタンを選択します。
- [データの生成]タブで、データを説明する短いプロンプトを入力します(例えば、「名前、日付、および金額を含む50件の顧客のトランザクション」)。
-
生成する行数を選択します(50を推奨)。

- **[データを生成]**を選択します。
- 表が表示されるまでしばらく待ちます。

[固定入力]タイルのデータを保存して使用する
固定入力データの準備が完了したら、それをDataFlowの任意のダウンストリーム変換タイルに接続します。 データは、スタンドアロンのDataSetとしてではなく、DataFlow定義に保存されます。 別のDataSetを作成するには、タイルを[出力DataSet]タイルに接続します。DataFlowが実行されると、Domoはその出力から新しいDataSetを作成します。 [出力DataSet]タイルの設定方法を確認してください。よくある質問
少数の列が小数点以下5桁まで切り捨てられるのはなぜですか?
少数の列が小数点以下5桁まで切り捨てられるのはなぜですか?
Domoでは、固定小数に(19,5)の精度/スケールを使用します。そのため、小数点の右側に5桁のみ表示されます。DataSetをより高い精度/スケールを使用する設定にするようリクエストできます。
[固定入力]タイルで作成できるデータ量に制限はありますか?
[固定入力]タイルで作成できるデータ量に制限はありますか?
アップロードできるファイルは、10,000行および1,000列に制限されています。手動で入力または貼り付けしたデータには制限が定義されていませんが、今後制限が適用される可能性はあります。
[固定入力]タイルでは、個別のDataSetが作成されますか?
[固定入力]タイルでは、個別のDataSetが作成されますか?
いいえ。データはDataFlow定義に保存されます。スタンドアロンのDataSetを作成するには、[固定入力]タイルを出力タイルに接続します。