メインコンテンツまでスキップ
waffle.svg
Domo Knowledge Base

SQL DataFlowを作成する(「ここまで実行」を使用)

Version 1

 

はじめに

DataFlowは、SQLクエリを使用して作成することができます。ETLを使用する場合に比べて難しくなりますが、オプションはより幅広くなります。  ETL DataFlowの作成については、 「ETL DataFlow」をご覧ください。

重要: DataFlow の入力DataSet は、PDPのポリシーで制限することはできません。利用可能なすべての行はDataFlowを経由する 必要があります 。このため、PDPポリシーは、DataFlowが生成する出力DataSetに適用する必要があります。
 

PDP ポリシーが有効の状態で、入力DataSet を使ってDataFlowを作成するときには、 以下の条件が 少なくとも1つ満たされていないと、 DataFlowに不具合が発生します。

  • 「管理者」セキュリティプロフィールまたは「DataFlowを管理する」が有効になっているカスタムロールがある。

  • あなたはDataSetの所有者である。

  • あなたは、「すべての行」ポリシーの一部を構成している。これにより、DataSetのすべての行にアクセスできます。

DataFlowでPDPを使用する方法に関しては、「PDPとDataFusion / DataFlow」を参照してください。 

SQL  DataFlowを作成する時のインターフェースは、Data Centerからアクセスします。Data Centerの詳細については、「 Data Centerのレイアウト」を参照してください。

ビデオ(4パート構成) - MySQL DataFlowのチュートリアル

パート1(全4パート)

 パート2(全4パート)

パート3(全4パート)

パート4(全4パート)


ビデオ - DataFlowを使用してDataSetを結合する

 

 

SQL DataFlowを作成する

注記:Redshiftでは、次に記されているように、ストアドプロシージャはサポートされて いません。  http://docs.aws.amazon.com/redshift/latest/dg/c_unsupported-postgresql-features.html 代替手段として、ストアドプロシージャをサポートするMySQL DataFlowを使用します。  

SQL  DataFlowを作成するには、

  1. Domoで、画面上部のツールバーの  [データ]  を クリックします。

  2. ウィンドウ上部の [Magic変換] ツールバーの [SQL] をクリックします。

    ヒント:SQL DataFlowエディターは、Domoの任意の場所でAppツールバーを選択し、[データ]、[SQL] の順に選択することでも開くことができます。
  3. 作成したいDataFlowのタイプを選択します。
     [DataFlowを作成] ビューが開きます。

  4. DataFlowの名前と詳細を入力します。

  5. 以下に従って、目的のDataFlow用の入力Datasetを選択します。

    1. [DataSetを選択する] をクリックします。

      注記: DataFlowの入力DataSetは既にDomoに存在するものである必要があります[DataFlowを作成] ビューで新しいDataSetをアップロードすることはできません。新規DataSetのDomoへのアップロード方法については、「コネクターでデータに接続する」を参照してください。
    2. 目的のDataSetを選択します。
      選択したDataSetの詳細(DataSetから作成されているカードの番号、最終更新時期、列名など)が表示されます。

      sql_dataflow_info.png

    3.  [DataSetを選択する] をクリックします。
      選択したDataSet の タイルが画面に表示されます。DataSetタイルをクリックすると、プレビューウィンドウを表示させることができます。

      1. (オプション) [列を選択]  タブの下で、列名の右側の「x」をクリックすると、DataSetに含めたくない列を削除できます。また、ペインの右上隅の [全ての列を削除]  をクリックすると、すべての列を削除できます。

         [列を追加]  ボタンをクリックして該当の列を選択することで、DataSetに個々の列を戻すこともできます。また、ペインの右上隅の  [全ての列を追加]  をクリックすると、DataSetに全ての列を戻すことができます。

      2. (オプション) [設定]  タブの下で、必要に応じてインデックスを追加します。インデックスを使用すると、表での操作速度を向上します。詳細については、この記事の後半の「 簡単なインデックス作成 」を参照してください。 

      3. 左下の [更新方法]  メニューで、どのようにDataSetを処理するかを選択します。このメニューでは、すべてのDataSetを処理するか、最後にDataFlowが実行された後に追加された新しい行のみを処理するかを選択できます。

        sql_dataflow_preview2_new.png

        重要: 最後のDataFlowの実行後に追加された新しい行のみを処理する方法を使用できるのは、その入力DataSetが追加行のみを処理する方法を使用して更新されるように設定されている場合に限られます。追加タイプの更新を使用したDataSetのスケジュールの詳細については、「DataSetの基本スケジュール」を参照してください。

        ヒント:入力DataSetに大量の行数が含まれる場合は、追加行のみを処理する方法を使用するようにしてください。新しい行のみを処理することで、DataFlowの実行速度を向上できます。
    4. ステップ5を繰り返すことで、必要な数の入力DataSetをさらに選択できます。

  6. (オプション)以下に従って変換を追加します。

    1. [変換を追加] をクリックします。
      さまざまなオプションとともに、[変換] ダイアログが表示されます。これらのオプションの詳細については、「変換および出力DataSetオプションを理解する」を参照してください。

    2. SQLコードを入力し、入力DataSetを変換させます。

    3. [適用] をクリックします。

  7. [出力DataSetを追加] をクリックします。
    さまざまなオプションとともに、[出力DataSet] ダイアログが表示されます。これらのオプションの詳細については、「変換および出力DataSetオプションを理解する」を参照してください。

    1. SQLコードを入力し、入力DataSetをどのように結合させるかを指定します。
      [変換] ダイアログで入力DataSetを変換した場合は、その変換はここで適用されます。

    2. (オプション)前の2つのステップを繰り返して、出力DataSetを追加します。

    3. [終了] をクリックします。

  8. [設定]  ペインでDataFlowをスケジュールします。さまざまなスケジュールオプションの詳細については、「DataFlowをスケジュールする」を参照してください。

    注記: スケジュールがまだ指定されていない場合は、DataFlowはデフォルトで手動 スケジュールに設定されます。
  9. (条件付き)DataFlowをStrictモードで実行する場合は、画面上部の [設定] ボタンをクリックし、[ Strictモード] オプションをオンに切り替えます。
    このオプションの詳細については、「Strictモードを理解する」を参照してください。 

    sql_dataflow_strict_mode.png

  10. (条件付き)以下のいずれかを行い、DataFlowを保存します:

    • このDataFlowを出力してDomoで利用できるDataSetにするためのスクリプトを実行する場合は、画面の右上隅にあるオレンジ色の下矢印をクリックし、[保存して実行] をクリックし、 必要に応じてバージョンの説明を入力してから、 [保存] をクリックして確定します。

      これで、DataFlowからDataSetが作成されるプロセスが開始されます。入力DataSetのサイズによっては、この作成プロセスは1分から1時間またはそれ以上かかります。DataSetの生成に加え、DataFlowのカードがData CenterのDataFlowリストに追加されます。

    • このDataFlowを今回だけDataSetに出力せずに保存したい場合は、[保存] をクリックし、必要に応じてバージョンの説明を入力してから、[保存] を再びクリックして確定します。DataFlowのカードがData CenterのDataFlowリストに追加されますが、DataSetは生成されません。DataFlowを実行してDataSetに出力する操作はいつでも行うことができます。これは、DataFlowリストにあるDataFlowのカードにマウスポインタを合わせ、 をクリックして [実行] を選択することで行います。このオプション、およびこのメニューで利用できるその他のオプションは本トピックにて後述します。

DataFlowを保存すると、このバージョンのエントリーがDataFlowの詳細ビュー内の  [バージョン] タブに追加されます。保存する際に説明を入力した場合は、DataFlowのエントリーにその説明が表示されます。バージョンの詳細については、 「DataFlowのバージョン履歴を閲覧する」を参照してください。 

注記:DataFlowが正常に実行されたときにDataFlowの出力DataSetが「更新済み」としてマークされないのはどうしてかと、疑問に思われるユーザーの方が多くいます。これは一般的には、データが実際には変更されていないためです。つまり更新されていません。そのため、DataSetは更新済みとは表示されません。  

変換および出力DataSetオプションを理解する

[変換]  および [出力]  ダイアログのオプションはほとんど同じです。この2つのダイアログの 唯一 の違いは、表の変換を選択した際に、インデックスを追加できるほうに [インデックス作成中]  タブが表示される点です。このタブは、出力DataSetでは表示されません。 

以下のスクリーンショットは、これらのダイアログの主なコンポーネントを示しています。
 

 

dataflow_transform_ui_new.png

以下の表で、このコンポーネントに関する詳細を見ることができます。

コンポーネント

説明

入力/変換リスト

SQLステートメントを作成する際に活用できるよう、このDataFlowで選択した全ての入力DataSetの名前が表示されます。さらに、以前に作成した変換もここに表示されます。これらの名前は [変換] および [出力DataSet] ダイアログの両方に表示されます。[変換] ダイアログで1つ以上の入力DataSetを変換した場合、[出力DataSet] ダイアログで参照した時にその変換は入力DataSetに適用されます。

入力DataSetをクリックすると、DataSet内の全ての列とそのデータタイプ(DECIMAL、TEXT、DATE/TIMEなど)のリストが表示されます。

[SQLを実行] メニュー

以下のオプションを使用できます。

  • [SQLを実行]:SQLが有効かどうか確認するためのテストを実施することができます。

  • [ここまで実行]:この時点までのSQLの全てのステップを実行します。数多くの変換や出力がある非常に大規模なDataFlowでは、このオプションを使用するとDataFlowのコードをテストする時間を節約できる可能性があります。 

  • [EXPLAIN SQL]:SQLのEXPLAIN PLANを表示します。これは、クエリの実行時にデータベースが作成するステップの順序付けられたリストです。このオプションを使用するとクエリを最適化できます。ただし、これらのステップは非常に複雑で専門的なため、この機能は上級ユーザーのみに推奨されます。  
     

    注記:実行時の効率性向上に必要なインデックスはMySQLによって判断されるため、すべてのインデックス変換がEXPLAIN SQLに表示されるわけではありません。インデックスを実行することで、効率性が低下すると判断される場合もあるためです。

SQLフィールド

入力DataSetの変換や結合を行うためのSQLコードを作成できます。このフィールドには、コードを書く時に便利な自動入力機能が含まれています。

プレビューボタン [SQLを実行]  または  [ここまで実行] の選択後に、ペイン下部にプレビューエリアを開きます。

新しい変換を作成すると、表タイプ またはSQLタイプの変換を作成できます。

  • 表変換 では、SELECTステートメントを使用して新しい表が作成され、常に出力表が生成されます。出力表が生成されるため、これらの表に基づき簡単なインデックスを作成できます。 

  •  SQL 変換 では、ストアドプロシージャといったSELECTステートメントを通常は含まない表が作成されます。この変換タイプでは出力表は作成されません。

変換と出力DataSetはどちらも、「ここまで実行」オプションをサポートしています。「ここまで実行」では、選択した時点までに限定してDataFlow を実行できます。 数多くの変換や出力がある非常に大規模なDataFlowでは、このオプションを使用するとDataFlowのコードをテストする時間を節約できる可能性があります。このオプションを使用するには、変換または出力DataSetのスパナメニューで  [ここまで実行]  を選択するか、変換または出力DataSetのエディターを開き、 [SQLを実行]  メニューの隣にある矢印をクリックして  [ここまで実行] を選択します。 

DataFlowの特定の変換の上または下のいずれかに変換を追加することもできます。これを行うには、変換のスパナメニューで [上に変換を追加]  または [下に変換を追加]  を選択し、 表タイプまたはSQLタイプのどちらの変換を作成するかを選択します。 

簡単なインデックス作成

インデックスは、表での操作速度を向上させるデータ構造です。 簡単なインデックス作成を使用すると、入力DataSetまたは 表の変換で1つ以上の列にすばやくインデックスを作成できます。

入力DataSetまたは変換でインデックスを作成するには、

  1. 入力DataSetまたは変換のエディターを開きます。

  2. [インデックス作成中] タブを選択します。

  3. インデックスのタイプを選択します。

  4. インデックスを適用する列を選択します。

  5.  [終了] をクリックします。 


ビデオ - EXPLAIN PLAN

 

Strictモードを理解する

Strictモードは、データ変更ステートメントの無効な値や欠損値をMySQLでどのように処理するかを制御します。  また、 ゼロによる除算、ゼロの日付、日付内でのゼロ値の処理方法にも影響します。詳細については、https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sql-mode-strictを参照してください。

DataFlow作成のためのベストプラクティス

各DataFlowでは以下の点に注意しましょう。

  • 変換における各ステップに、記述的な名前をつけること。

  • 結合または操作される入力DataSet、および作成されるDataSetの説明を含めること。データの所有者を示すことも必要です。

  • 出力DataFlowと同じ名前を付けること(DataFlowの出力はData Center内の独自のDataSetになるため)。これにより、どのDataSetがどのDataFlowによって作成されたかを容易に識別できるようになります。