すべてのプロダクト
Search
ドキュメントセンター

Dataphin:API SQL スクリプト

最終更新日:Jun 06, 2026

このドキュメントでは、クエリタイプおよび操作タイプの API の SQL スクリプトを作成する方法について説明します。

Get/List (クエリタイプ)

  • サポートされているクエリ機能:

    • 同一のデータソース内で、単一テーブルのクエリ、複数テーブルの結合 (JOIN)、およびネストされたクエリ (サブクエリ) を実行できます。

    • 高度な SQL モード (MyBatis スタイル) を使用できます。

    • SELECT ステートメントでパラメーターを使用できます。 例: SELECT id_card, SUM(CASE WHEN id_card LIKE ${id_card} THEN 1 ELSE 0 END) AS proj_score FROM table WHERE c LIKE ${id_card} GROUP BY id_card

  • サポートされていない構文と使用法:

    • 複数の SQL クエリステートメント:1 つの API で SELECT ...; SELECT ...; のように複数の SQL ステートメントを実行することはできません。

    • 非 DQL ステートメントList または Get API では、INSERTUPDATECREATEDELETE などの非 DQL ステートメントを使用することはできません。

    • SELECT *SELECT * クエリは使用しないでください。 クエリする列を明示的に指定する必要があります。

    • 列名のプレフィックス:列名にテーブルのプレフィックス (例:t.name) が含まれる場合、SELECT t.name AS name FROM table のように、レスポンスパラメーター名としてエイリアスを使用する必要があります

    • 集計関数SUM()COUNT()MAX()MIN() などの集計関数を使用する場合、レスポンスパラメーター名としてエイリアスを使用する必要があります。 例: SELECT SUM(num) AS total_num FROM table

    • SQL スクリプトではページネーションステートメントを使用しないでください。 代わりに、ページネーションパラメーターを使用してページネーションを実装します。

      説明
      • データソースが SAP HANA の場合、ページネーションを実装するには、SQL でページネーションステートメントを使用し、ページネーションパラメーターを定義します。

      • TDengine データソースの場合、SQL スクリプトでページネーションステートメントを使用する必要があります。 PageStartPageSize などのページネーションパラメーターが提供されていない場合は、すべてのデータが返されます。 提供されている場合は、指定された値に従ってデータがページ分割されます。

  • 高度な SQL モードでは、動的フィールドクエリにより、パラメーターを使用してレスポンスフィールドを動的に指定できます。

    • パラメーターの形式:パラメーター名は var_cols_ で始まり、var_cols_xxx (例: var_cols_args) の形式に従う必要があります。 例: SELECT id, ${var_cols_args} FROM table1

    • レスポンスパラメーター:サポートされているすべての動的クエリフィールドをレスポンスパラメーターとして宣言する必要があります。

    • API の呼び出し:API を呼び出す際に、クエリしたいフィールドを動的パラメーターで渡します。 渡されなかったフィールドは、レスポンスで null 値になります。 例: var_cols_args=name,age,dept

    • 実際の実行:結果の SQL ステートメントは次のようになります: SELECT id, name, age, dept FROM table1

  • 高度な SQL モードでは、MyBatis SQL の比較演算子はエスケープする必要があります。

    元の演算子

    エスケープされた演算子

    <

    &lt;

    >

    &gt;

    <=

    &lt;=

    >=

    &gt;=

  • データソース固有の制限事項:

    データソース

    制限事項

    TDengine

    • SQL で LIMIT/OFFSET を使用してページネーションを実装する必要があります。

    • オプションのパラメーターはサポートされていません。

    SAP HANA

    • ページネーションはサポートされていません。 PageStart および PageSize パラメーターは効果がありません。

    • オプションのパラメーターはサポートされていません。

    Elasticsearch

    • Elasticsearch は、ディープページネーションに ScrollId を使用します。 ScrollId がない場合、PageStart および PageSize パラメーターを使用して取得できるのは最初の 10,000 レコードのみです。 この制限を超えてレコードを取得しようとすると、API 呼び出しが失敗します。

      たとえば、PageStart9998 に設定されている場合、PageSize の最大値は 2 です。

    • 最初の 10,000 レコードを超えるデータをクエリするには、WHERE 句で scrollId を指定する必要があります。 API を開発する際に scrollId リクエストパラメーターを定義し、リクエストに対応する scrollId 値を渡すことができます。

      説明

      scrollId を使用してクエリを実行する場合、標準のページネーションは使用できません。 PageStartPageSize の値を渡さないでください。渡すと呼び出しは失敗します。

    • WHERE 句は条件として scrollId のみをサポートします。 句内の他のフィールドは無視されます。

      例: select a from table where scrollId=${scrollId}

    • サブクエリはサポートされていません。

    HBase

    • 単一の rowkey クエリのみがサポートされており、rowkey は必須のリクエストパラメーターです。 クエリ構文は次のとおりです:

      select info1.id as name from table where rowkey = ${rowkey}

    • ORDER BY 句はサポートされていません。

    • ページネーションはサポートされていません。 PageStart および PageSize パラメーターは効果がありません。

    • JOIN ステートメントはサポートされていません。

    PostgreSQL

    クロススキーマクエリはサポートされていません。 現在の接続のスキーマ内でのみデータをクエリできます。

    Impala

    高度な SQL モード (MyBatis スタイル) はサポートされていません。

    Lindorm

    JOIN ステートメントはサポートされていません。

    DolphinDB

    ネイティブの DolphinDB モードはサポートされていません。 DolphinDB を使用するには、データソースを作成し、その SQL 互換モードを Oracle または MySQL のいずれかに設定する必要があります。

    重要

    データソースの互換モードを変更すると、既存の API に予期しないエラーが発生する可能性があります。 ビジネス要件に基づいてこの設定を調整してください。

    GBase 8a

    QUALIFY 句は基本的な SQL モードではサポートされていません。

    OpenSearch

    • 単純なサブクエリはサポートされていますが、複数レベルにネストされた IN サブクエリは正しく実行されない場合があります。

      例: SELECT ... WHERE age IN (SELECT age FROM ... WHERE age IN (18,39));

    • JDBC を使用してクエリを実行する場合、JOIN を含むサブクエリが原因でクエリ結果が空になることがあります。

      例: SELECT ... FROM (SELECT ... FROM t1 LEFT JOIN t2 ON ...) e1 WHERE ...;

    • 共通テーブル式の WITH 構文はサポートされていません。

      例: WITH test_with AS (...) SELECT ...;

    • UNION および UNION ALL ステートメントは、サブクエリに含まれている場合でもサポートされていません。

      例: SELECT id FROM (SELECT id FROM t1 UNION SELECT id FROM t2) t;

    • COALESCE 構文には、現在の JDBC ドライバーとの互換性の問題があります。 代替として CASE WHEN 構文を使用することを推奨します。

      SELECT COALESCE(id, 0) FROM ...;SELECT CASE WHEN id IS NULL THEN 0 ELSE id END FROM ...; に置き換えます。

    • CASE WHEN 式を JOIN 句とともに使用すると、フィールドの解析が失敗したり、列が見つからなかったりすることがあります。 複雑なクエリを構築する前に、構文の互換性を確認することを推奨します。

      例: SELECT CASE WHEN a.id= ... END FROM t1 a JOIN t2 b ON ...;

    Hive

    Hive テーブルのクエリエンジンはテーブル形式に依存します。Spark エンジンはデータレイクテーブル (Iceberg や Hudi など) をクエリし、Hive エンジンは通常のテーブル (ORC、Parquet、TextFile など) をクエリします。

Create/Update/Delete (操作タイプ)

  • サポートされている SQL モード:

    • 基本的な SQL モード:標準の INSERTUPDATE、および DELETE ステートメントをサポートします。 このモードは ${param} プレースホルダーを使用してパラメーターを渡し、単純なシナリオに適しています。

    • 高度な SQL モード (MyBatis スタイル) :条件付きステートメント、動的フィールド、バッチ操作などの複雑なロジックには、このモードを使用します。 次のタグがサポートされています:

      <if>, <choose>, <when>, <otherwise>, <trim>, <foreach>
  • 高度な SQL モードでのバッチ操作はレコードを個別に処理するため、パフォーマンスが低下する可能性があります。 したがって、可能な限り、バッチでの作成、更新、または削除の API にこのモードを使用することは避けてください。

  • SQL ステートメントに in 条件パラメーターが含まれている場合、各レコードが個別に実行されるため、パフォーマンスが低下します。 in 条件パラメーターの使用は避けることを推奨します。

  • PostgreSQL のみが RETURNING 句 をサポートしています。