この Topic では、クエリ API と操作 API のスクリプトを編集する方法について説明します。
Get/List (クエリタイプ)
サポートされているクエリパターン:
同じデータソース内での単一テーブルクエリ、テーブル結合、ネストされたクエリ (サブクエリ) をサポートします。
高度な 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 文: 単一の API で複数の SQL 文を実行することはできません (例:
SELECT ...; SELECT ...;)。非 DQL 文: Get および List API は、INSERT、UPDATE、CREATE、DELETE などの非 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 でページング文を使用します。`PageStart` および `PageSize` パラメーターを渡さない場合、完全なデータが返されます。これらのパラメーターを渡すと、定義した値に基づいてデータが返されます。
高度な SQL モードで利用可能な動的フィールドクエリを使用すると、検索文にパラメーターを含めることで、戻りフィールドを動的に指定できます。
パラメーターフォーマット: パラメーターは `var_cols_` プレフィックスで始まる必要があります (例: `var_col_args`)。例:
SELECT id, ${var_cols_args} FROM table1。戻りパラメーター: サポートされているすべての動的クエリフィールドを戻りパラメーターとして追加します。
API 呼び出し: API を呼び出すとき、動的パラメーターでクエリフィールドを渡します。フィールドが渡されない場合、その値は結果で null になります。例:
var_col_args=name,age,dept。実際の実行: 実行される SQL 文は次のとおりです:
SELECT id, name, age, dept FROM table1。
高度な SQL モードを使用する場合、MyBatis SQL の比較演算子にはエスケープ文字を使用する必要があります。
元の記号
エスケープ文字
<<>><=<=>=>=データソース固有の制限:
データソース
制限
TDengine
SQL で
LIMIT/OFFSETを使用してページングを実装します。オプションのパラメーターはサポートされていません。
SAP HANA
ページングはサポートされていません。PageStart および PageSize パラメーターを渡しても効果はありません。
オプションのパラメーターはサポートされていません。
Elasticsearch
ScrollId を使用してページングクエリを実装します。ScrollId を指定しない場合、最大 10,000 件のデータエントリをクエリできます。PageStart および PageSize ページングパラメーターを設定する際、10,000 件を超えるエントリをクエリしないでください。超えると呼び出しが失敗します。
たとえば、PageStart を 9998 に設定した場合、PageSize の最大値は 2 です。
最初の 10,000 件を超えるデータをクエリするには、`where` 句を使用して scrollId を指定します。API 開発中に scrollId リクエストパラメーターを指定し、クエリで対応する scrollId 値を渡すことができます。
説明指定された scrollId 値を使用してクエリする場合、ページングは使用できません。PageStart と PageSize の値を渡さないでください。渡すと呼び出しが失敗します。
`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
Oracle および MySQL の SQL 互換モードのみがサポートされています。ネイティブ DolphinDB モードはサポートされていません。データソースを作成する際に、SQL 互換モードを Oracle または MySQL に設定して、そのデータソースを API 作成に使用してください。
重要データソースの互換モードを変更すると、既存の API で予測不能なエラーが発生する可能性があります。必要に応じて設定を調整してください。
Create/Update/Delete (操作タイプ)
サポートされている SQL モード:
基本 SQL モード: 標準の
INSERT、UPDATE、DELETE文をサポートします。${param}プレースホルダーを使用してパラメーターを渡します。このモードは単純なシナリオに適しています。高度な SQL モード (MyBatis スタイル): このモードは、条件付きステートメント、動的フィールド、バッチ操作などの複雑なロジックに使用できます。次のタグがサポートされています:
<if>, <choose>, <when>, <otherwise>, <trim>, <foreach>
バッチ処理に高度な SQL モードを使用すると、各データ入力が個別に実行されるため、パフォーマンスが低下します。したがって、バッチ作成、更新、または削除 API には高度なモードを使用しないでください。
SQL 文に
in条件パラメーターが含まれている場合、各データ入力は個別に実行されます。これにより、パフォーマンスが低下します。したがって、in条件パラメーターの使用は避けるべきです。PostgreSQL のみが `RETURNING` 構文をサポートしています。