ODPS SQL ノードでは、SQL に似た構文を使用して、リアルタイム処理を必要としない分散シナリオでテラバイト級のデータを処理できます。

一般に、ジョブの準備からコミットまでには長い時間がかかります。 ODPS SQL ノードを使用して、数千から数万のトランザクションを処理できます。 ODPS SQL ノードは、大量のデータを処理するように設計されたオンライン分析処理 (OLAP) アプリケーションです。

ODPS SQL ノードを作成します。

  1. DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで [ワークスペース] をクリックします。 [ワークスペース] ページで、ターゲットワークスペースを見つけて、[アクション] 列の [データ分析] をクリックします。
  2. ポインターを作成アイコンの上に移動し、[MaxCompute] > [ODPS SQL] をクリックします。

    ターゲットワークフローを見つけて [MaxCompute] を右クリックし、[作成] > [ODPS SQL] をクリックすることもできます。

  3. 表示される [ノードを作成] ダイアログボックスで、ノード名を入力し、ターゲットフォルダーを選択して、[コミット] をクリックします。
    ノード名は最大 128 文字です。
  4. ノード構成タブで ODPS SQL ノードのコードを編集します。

    ODPS SQL ノードのコードを編集します。 コードは必要な構文に準拠している必要があります。 SQL 構文の詳細については、「SQL 概要」を参照してください。

    国際標準化機構 (ISO) が UTC+8 タイムゾーンで行った調整により、関連する SQL ステートメントを DataWorks を使用して実行すると、実際の時間と出力時間に差異が生じる可能性があります。 1900 年から 1928 年までの時間差は 352 秒です。 1900 年より前の時間差は 9 秒です。
    現在、ノードコードで個別に「SET 文」を使用することはできません。 SET 文は、他の SQL 文と一緒に実行する必要があります。 たとえば、次のように SET 文を使用できます。
    setproject odps.sql.allow.fullscan=true;
    select 1;
    例:テーブルを作成し、データをテーブルに挿入し、テーブル内のデータを照会します。
    1. test1 という名前のテーブルを作成します。
      CREATE TABLE IF NOT EXISTS test1 
      ( id BIGINT COMMENT '' ,
        name STRING COMMENT '' ,
        age BIGINT COMMENT '' ,
        sex STRING COMMENT '');
    2. テーブルにデータを挿入します。
      INSERT INTO test1 VALUES (1,'Zhang San',43,'Male');
      INSERT INTO test1 VALUES (1,'Li Si',32,'Male');
      INSERT INTO test1 VALUES (1,'Chen Xia',27,'Female');
      INSERT INTO test1 VALUES (1,'Wang Wu',24,'Male');
      INSERT INTO test1 VALUES (1,'Ma Jing',35,'Female');
      INSERT INTO test1 VALUES (1,'Zhao Qian',22,'Female');
      INSERT INTO test1 VALUES (1,'Zhou Zhuang',55,'Male');
    3. テーブルのデータを照会します。
      select * from test1;
    4. 上記の SQL 文をコードエディターに入力した後、ツールバーの 実行 アイコンをクリックします。 DataWorks は SQL 文を上から下に実行し、ログを生成します。実行
      INSERT INTO 文により、予期しないデータの重複が発生する可能性があります。 DataWorks は INSERT SQL 文を再実行しませんが、対応するノードを再実行するかもしれません。 INSERT INTO 文は使用しないことを推奨します。 DataWorks が INSERT INTO 文を実行すると、次の情報がログに表示されます。
      SQLのINSERT INTO 文は、繰り返しのデータ挿入を引き起こす可能性があります。 SQL レベルの再試行はINSERT INTO 文に対して取り消されましたが、タスクレベルで再試行する可能性はまだあります。 INSERT INTO 文は使用しないことを推奨します。 
      INSERT INTO 文を引き続き使用する場合は、関連するリスクを認識しており、潜在的なデータ重複の結果を受け入れる用意があると見なします。
    5. 返された結果を確認し、ツールバーの 保存 アイコンをクリックして、SQL 文を保存します。
  5. クエリ結果を表示します。

    DataWorks はクエリ結果をワークブックに表示します。

    ワークブックでクエリ結果を表示または管理したり、クエリ結果をローカルの Excel ファイルにコピーしたりできます。

    操作 説明
    列を非表示 1 つ以上の列を選択して下部の [列を非表示] をクリックし、選択した列を非表示にします。
    行のコピー 1 つ以上の行を選択して下部の [行のコピー] をクリックし、選択した行をコピーします。
    列のコピー 1 つ以上の列を選択して下部の [列のコピー] をクリックし、選択した列をコピーします。
    選択したものをコピー ワークブック内の 1 つ以上のセルを選択して下部の [選択したものをコピー] をクリックし、選択したセルをコピーします。
    データ分析 下部の [データ分析] をクリックし、ワークブック編集ページに移動します。
    検索 下部の [検索] をクリックし、ワークブックのデータを検索します。 ボタンをクリックすると、結果領域の右上隅に検索ボックスが表示されます。
    ダウンロード 結果データを GBK または UTF-8 のエンコード形式でダウンロードします。
  6. ノードを実行するコストを見積もります。

    [費用見積もり] アイコンをクリックして、ODPS SQL ノードの実行コストを見積もります。

    [費用見積もり] アイコンをクリックすると、推定コストが表示されます。 [費用見積もり] 列にエラーが表示された場合は、ポインターを [X] に移動してエラーの原因を表示します。

  7. ノードのプロパティを設定します。

    右側のナビゲーションウィンドウで [プロパティ] タブをクリックします。 表示される [プロパティ] タブで関連するパラメーターを設定します。 詳細については、「プロパティ」をご参照ください。

  8. ノードをコミットします。

    ノードのプロパティを設定したら、左上隅の [保存] アイコンをクリックします。 次に、ノードを開発環境にコミット、またはコミットしてロックを解除します。

  9. ノードをデプロイします。

    詳細については、「ノードのデプロイ」をご参照ください。

  10. 本番環境でノードをテストします。

注意

  • ODPS SQL ノードのコードでは、SET 文、USE 文、または SQL エイリアス文を個別に使用することはできません。 これらは、他の SQL 文と一緒に実行する必要があります。 たとえば、次のように SET 文を使用できます。
    set a=b;
    create table name(id string);
  • ODPS SQL ノードのコードで、SET 文、USE 文、SQL エイリアス文などのキーワードを含む文にコメントを追加することはできません。 たとえば、次のコメントは許可されていません。
    create table name(id string);
    set a=b; // Comment. You cannot add a comment here.
    create table name1(id string);
  • ワークフロー開発中の ODPS SQL ノードの実行と ODPS SQL ノードのスケジュールされた実行には、以下の違いがあります。
    • ワークフロー開発中に実行:キーワードを含むすべての文 (SET 文、USE 文、SQL エイリアス文など) をノードコードで組み合わせ、他の SQL 文を実行する前にそれらを実行します。
    • スケジュールされた実行:すべての SQL 文を順番に実行します。
    set a=b;
    create table name1(id string);
    set c=d;
    create table name2(id string);
    次の表は、前述の SQL 文の 2 つの実行モードの違いを示しています。
    SQL 文 ワークフロー開発中に実行 スケジュールされた実行
    最初の SQL 文
    set a=b;
    set c=d;
    create table name1(id string);
    set a=b;
    create table name1(id string);
    2 番目の SQL 文
    set a=b;
    set c=d;
    create table name2(id string);
    set c=d;
    create table name2(id string);
  • スケジューリングパラメーターは、key=value の形式で指定する必要があります。 等号記号 (=) の前後にスペースを追加しないでください。 例:
    time = {yyyymmdd hh:mm:ss} // Incorrect format.
    a =b // Incorrect format.  
  • スケジューリングパラメーターとして bizdate や date などのキーワードを使用する場合は、yyyymmdd の形式で値を指定する必要があります。 他の時間形式を使用する場合は、前述のキーワードをスケジューリングパラメーターとして使用しないでください。 例:
    bizdate=201908 // Incorrect format.
  • ワークフローの開発中は、SELECT、READ、または WITH で始まる構文のみを使用して、ノードの結果データを照会できます。 それ以外の場合、結果は返されません。
  • 複数の SQL 文をセミコロン (;) で区切り、それらを別の行に配置します。
    • 間違った例
      create table1;create table2
    • 正しい例
      create table1;
      create table2;