Snowflake SQL API リファレンス¶
このトピックでは、SQL API の操作、リクエスト、および応答について説明します。
操作¶
POST /api/v2/statements¶
実行のために1つ以上の SQL ステートメントを送信するには、 POST リクエストを /api/v2/statements に送信します。ステートメントを非同期で実行するように指定できます。
リクエスト構文¶
クエリパラメーター¶
パラメーター |
説明 |
|---|---|
|
(オプション) API リクエストの一意な ID (UUID)。 SQL ステートメントの実行リクエストの再送信 をご参照ください。 |
|
(オプション)ステートメントを非同期で実行し、ステートメントハンドルを返すには、 パラメーターが指定されていないか、falseに設定されている場合は、ステートメントが実行され、実行が45秒以内に完了すると結果が返されます。ステートメントの実行が完了するまでに時間がかかる場合は、ステートメントハンドルが返されます。 |
|
(オプション) 注釈 GET リクエストでこのパラメーターを指定することはできません。 デフォルトでは、SQL NULL の値は このクエリパラメーターをfalseに設定します(例: |
リクエストヘッダー¶
リクエストには、 すべての操作のリクエストヘッダー にリストされているヘッダーを含める必要があります。
リクエスト本文¶
(必須)リクエストの本文には、 /api/v2/statements/ へのリクエスト POST の本文 で指定されたオブジェクトが含まれている必要があります。
応答¶
この操作は、以下にリストされている応答コードを返すことができます。
コード |
説明 |
|---|---|
200 |
ステートメントは正常に実行されました。 この応答コードには、次のヘッダーを応答に含めることができます。 リクエストで単一の SQL ステートメントが送信された場合、応答の本文には、リクエストされたデータを含む ResultSet オブジェクトが含まれます。 注釈 応答の 以下は、結果が単一のパーティションに返される単一の SQL ステートメントに対する応答の例です。ここで、 以下は、結果を複数のパーティションで返す必要がある単一の SQL ステートメントの応答の例です。ここで、 複数の SQL ステートメントがリクエストで送信された場合、応答の本文には、複数のステートメントの実行ステータスに関する詳細を含む ResultSet オブジェクトが含まれます。 この場合、応答にはリクエストされたデータが含まれていません。代わりに、 応答には 以下は、複数の SQL ステートメントを指定するリクエストの応答の例です。ここで、
|
202 |
ステートメントの実行はまだ進行中です。 応答の本文には、ステートメント実行のステータスに関する詳細を含む QueryStatus オブジェクトが含まれています。 以下は、応答の例です。 |
408 |
ステートメントの実行がタイムアウト期間を超えました。ステートメントの実行はキャンセルされました。 応答の本文には、ステートメント実行のキャンセルに関する詳細を含む QueryStatus オブジェクトが含まれています。 |
422 |
ステートメントの実行中にエラーが発生しました。詳細はエラーコードとエラーメッセージを確認してください。 応答の本文には、エラーに関する詳細を含む QueryFailureStatus オブジェクトが含まれています。 以下は、応答の例です。 |
この操作によって返される他の応答コードについては、 すべての操作の応答コード をご参照ください。
GET /api/v2/statements/{statementHandle}¶
ステートメントの実行のステータスを確認するには、 GET リクエストを /api/v2/statements/{statementHandle} に送信します。ステートメントが正常に実行された場合、応答の本文には、リクエストされたデータを含む ResultSet オブジェクトが含まれます。
リクエスト構文¶
パスパラメーター¶
パラメーター |
説明 |
|---|---|
|
(必須)チェックするステートメントのハンドル。このハンドルは、 ステートメント実行のリクエスト に対する応答として返された QueryStatus オブジェクトから取得できます。 |
クエリパラメーター¶
|
(オプション) API リクエストの一意な ID (UUID)。 SQL ステートメントの実行リクエストの再送信 をご参照ください。 |
|---|---|
|
(オプション)返すパーティション番号。各パーティションのサイズはSnowflakeによって決定されます。 詳細については、 応答からの結果の取得 をご参照ください。 |
リクエストヘッダー¶
リクエストには、 すべての操作のリクエストヘッダー にリストされているヘッダーを含める必要があります。
応答¶
この操作は、以下にリストされている応答コードを返すことができます。
コード |
説明 |
|---|---|
200 |
ステートメントは正常に実行されました。 この応答コードには、次のヘッダーを応答に含めることができます。 応答の本文には、リクエストされたデータを含む ResultSet オブジェクトがあります。 以下は応答の例です。ここで、 |
202 |
ステートメントの実行はまだ進行中です。リクエストを繰り返して、ステートメント実行のステータスを確認します。 応答の本文には、ステートメント実行のステータスに関する詳細を含む QueryStatus オブジェクトが含まれています。 以下は、応答の例です。 |
422 |
ステートメントの実行中にエラーが発生しました。詳細はエラーコードとエラーメッセージを確認してください。 応答の本文には、エラーに関する詳細を含む QueryFailureStatus オブジェクトが含まれています。 |
この操作によって返される他の応答コードについては、 すべての操作の応答コード をご参照ください。
POST /api/v2/statements/{statementHandle}/cancel¶
ステートメントの実行をキャンセルするには、 POST リクエストを /api/v2/statements/{statementHandle}/cancel に送信します。
リクエスト構文¶
パスパラメーター¶
パラメーター |
説明 |
|---|---|
|
(必須)チェックするステートメントのハンドル。このハンドルは、 ステートメント実行のリクエスト に対する応答として返された QueryStatus オブジェクトから取得できます。 |
クエリパラメーター¶
パラメーター |
説明 |
|---|---|
|
(オプション) API リクエストの一意な ID (UUID)。 SQL ステートメントの実行リクエストの再送信 をご参照ください。 |
リクエストヘッダー¶
リクエストには、 すべての操作のリクエストヘッダー にリストされているヘッダーを含める必要があります。
応答¶
この操作は、以下にリストされている応答コードを返すことができます。
コード |
説明 |
|---|---|
200 |
ステートメントの実行は正常にキャンセルされました。 応答の本文には、ステートメントのキャンセルに関する情報を含む CancelStatus オブジェクトが含まれています。 以下は、応答の例です。 |
422 |
ステートメントの実行中にエラーが発生しました。詳細はエラーコードとエラーメッセージを確認してください。 応答の本文には、エラーに関する詳細を含む QueryFailureStatus オブジェクトが含まれています。 以下は、応答の例です。 |
この操作によって返される他の応答コードについては、 すべての操作の応答コード をご参照ください。
すべての操作のリクエストヘッダー¶
次のリクエストヘッダーは、すべての操作に適用されます。
ヘッダー |
必須か、またはオプションか。 |
説明 |
|---|---|---|
|
必須 |
これを 例:
サーバーへの認証 をご参照ください。 |
|
必須 |
これを応答の本文で受け入れられるメディアタイプ(MIME タイプ)のリストに設定します。タイプ |
|
必須 |
これをリクエストの本文のメディアタイプ(MIME タイプ)に設定します。これを |
|
必須 |
これをアプリケーションの名前とバージョンに設定します(例: |
|
オプション |
これを次のいずれかの値にセットします。
このヘッダーはオプションですが、このヘッダーを指定することもできます。ヘッダーは以下の値のいずれかにセットできます。
|
リクエスト本文のオブジェクトの型¶
/api/v2/statements/ へのリクエスト POST の本文¶
/api/v2/statements/ エンドポイントへの POST リクエストの本文(POST /api/v2/statements を参照)は、実行する SQL ステートメント、ステートメントコンテキスト、および結果セットのデータ形式を指定するために使用する JSON オブジェクトです。このオブジェクトをリクエストの本文で使用して、ステートメントを実行します。
フィールド¶
フィールド |
説明 |
|---|---|
|
(オプション)実行する SQL ステートメント。サポートされているステートメントとサポートされていないステートメントのリストについては、 SQL API の制限 をご参照ください。 型: 文字列 |
|
(オプション)ステートメント実行のタイムアウト(秒)。ステートメントの実行に指定されたタイムアウトよりも時間がかかる場合、実行は自動的にキャンセルされます。タイムアウトを最大値(604800 秒)に設定するには、タイムアウトを0に設定します。このフィールドが設定されていない場合、 STATEMENT_TIMEOUT_IN_SECONDS パラメーターで指定されたタイムアウトが使用されます。 型: 64ビットの符号付き整数 例: |
|
(オプション)ステートメントが実行されるデータベース。このフィールドの値は大文字と小文字が区別されます。 このフィールドを省略すると、 SQL API は、 型: 文字列 例: |
|
(オプション)ステートメントが実行されるスキーマ。このフィールドの値は大文字と小文字が区別されます。 このフィールドを省略すると、 SQL API は、 型: 文字列 例: |
|
(オプション)ステートメントの実行時に使用するウェアハウス。このフィールドの値は大文字と小文字が区別されます。 このフィールドを省略すると、 SQL API は、 型: 文字列 例: |
|
(オプション)ステートメントの実行時に使用するロール。このフィールドの値は大文字と小文字が区別されます。 このフィールドを省略すると、 SQL API は、 型: 文字列 例: |
|
(オプション) SQL ステートメントの バインド変数 の値。ステートメントを実行すると、Snowflakeはステートメント内のプレースホルダー( このフィールドの形式は、 SQL API の GA リリースで変更される可能性があることに注意してください。 型: オブジェクト 例: |
|
(オプション)このリクエストに設定する セッションパラメーター。 型: オブジェクト(statements_parameters) |
例¶
以下は、本文オブジェクトの例です。
statements_parameters¶
statements_parameters は、このリクエストに設定する セッションパラメーター を指定するために使用する JSON オブジェクトです。このオブジェクトは、 /api/v2/statements エンドポイントへの POST リクエスト本文の /api/v2/statements/ へのリクエスト POST の本文 フィールドにある必要があります(parameters を参照)。
注釈
SQL API は、次のテーブルにリストされているセッションパラメーターのみをサポートします。
フィールド¶
フィールド |
説明 |
|---|---|
|
(オプション) BINARY から VARCHAR への変換関数によって出力として返される VARCHAR 値の形式を指定します。詳細については、 BINARY_OUTPUT_FORMAT をご参照ください。 型: 文字列 例: |
|
(オプション)ダウンロードするクエリ結果の各セット(またはチャンク)の最大サイズを(MB で)指定します。詳細については、 CLIENT_RESULT_CHUNK_SIZE をご参照ください。 型: 整数 例: |
|
(オプション) DATE データ型の表示形式を指定します。詳細については、 DATE_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(リクエストに1つ以上の SQL ステートメントを指定する場合に必要)マルチステートメント機能を使用するときにリクエストで送信される SQL ステートメントの数を指定します。有効な値:
型: 文字列 例: |
|
(オプション) SQL ステートメントに関連付けるクエリタグ。詳細については、 QUERY_TAG パラメーター をご参照ください。 型: 文字列 例: |
|
(オプション)結果セットで返される行の最大数を指定します。0(デフォルト)は最大値がないことを意味します。詳細については、 ROWS_PER_RESULTSET パラメーター をご参照ください。 型: 整数 例: 200 |
|
(オプション) TIME データ型の表示形式を指定します。詳細については、 TIME_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(オプション) TIMESTAMP_LTZ データ型の表示形式を指定します。詳細については、 TIMESTAMP_LTZ_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(オプション) TIMESTAMP_NTZ データ型の表示形式を指定します。詳細については、 TIMESTAMP_NTZ_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(オプション) TIMESTAMP データ型エイリアスの表示形式を指定します。詳細については、 TIMESTAMP_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(オプション) TIMESTAMP_TZ データ型の表示形式を指定します。詳細については、 TIMESTAMP_TZ_OUTPUT_FORMAT をご参照ください。パラメーターを使用してクエリ結果の出力形式を決定する方法の詳細については、 クエリ結果の出力のフォーマット をご参照ください。 型: 文字列 例: |
|
(オプション)ステートメントの実行時に使用するタイムゾーン。詳細については、 TIMEZONE パラメーター をご参照ください。 型: 文字列 例: |
|
(オプション)元の結果の有効期限が切れていない限り、同じクエリの連続する呼び出し間でクエリ結果を再利用できるかどうか。詳細については、 USE_CACHED_RESULT パラメーター をご参照ください 型: 文字列 例: |
すべての操作の応答コード¶
このセクションには、すべての操作に適用される応答コードがリストされています。
コード |
説明 |
|---|---|
400 |
不正なリクエストです。 リクエストペイロードが無効であるか、形式が正しくありません。これは、アプリケーションが正しいリクエストペイロードを送信しなかった場合に発生します。応答本文には、実際の原因を示すエラーコードとメッセージが含まれる場合があります。アプリケーションは、再試行のためにリクエスト本文を再構築する必要があります。 以下は、応答の例です。 |
401 |
許可されていません。 リクエストは許可されていません。これは、添付されたアクセストークンが無効または欠落している場合に発生します。応答本文には、エラーコードと実際の原因(例: 期限切れ、無効なトークンな)を示すメッセージが含まれる場合があります。アプリケーションは、再試行のために新しいアクセストークンを取得する必要があります。 サーバーへの認証 をご参照ください。 以下は、応答の例です。 |
403 |
禁止。 リクエストは禁止です。これは、 API が無効であるにもかかわらず、リクエストがあった場合に発生します。 |
404 |
見つかりません。 リクエストエンドポイントが無効です。これは、 API エンドポイントが間違っている場合に発生します。たとえば、アプリケーションが存在しない |
405 |
メソッドは許可されていません。 リクエストメソッドが、サポートされている API と一致しません。これは、たとえば、アプリケーションが GET メソッドで API を呼び出しても、エンドポイントが POST のみを受け入れる場合に発生します。アプリケーションは、リクエストを送信するときにサポートされている方法を使用する必要があります。 以下は、応答の例です。 |
415 |
リクエストヘッダー |
422 |
リクエストは整形式(つまり構文的に正しい)であったが、処理できませんでした。 API は |
429 |
リクエストが多すぎます。 リクエスト数がレート制限に達しました。アプリケーションは、 API エンドポイントに送信されるリクエストの頻度を減らす必要があります。アプリケーションはバックオフで再試行する場合があります。指数関数的にジッターをともなうバックオフが推奨です。 この応答は、サーバーが同時に受信するリクエストが多すぎる場合にも発生する可能性があります。API の同時実行制限は、Snowflakeによって適用される同時実行制限によって決定されます。 以下は、応答の例です。 |
500 |
内部サーバーエラー。 サーバーで回復不能なシステムエラーが発生しました。応答本文には、詳細なガイダンスとしてエラーコードとメッセージが含まれる場合があります。
|
502 |
Bad Gateway。 サーバーがゲートウェイまたはプロキシとして動作し、アップストリームサーバーから無効な応答を受信しました。
|
503 |
サービスは利用できません。 サーバーでタイムアウトが発生したため、リクエストは処理されませんでした。アプリケーションはバックオフで再試行する場合があります。指数関数的にジッターをともなうバックオフが推奨です。 |
504 |
Gatewayのタイムアウト。 サーバーでタイムアウトが発生したため、リクエストは処理されませんでした。アプリケーションはバックオフで再試行する場合があります。指数関数的にジッターをともなうバックオフが推奨です。 |
522 |
無効な SSL 証明書。 サーバーは提供された SSL 証明書を検証できませんでした。 |
すべての操作の応答ヘッダー¶
応答には、次のヘッダーを含めることができます。
ヘッダー |
説明 |
|---|---|
|
このヘッダーは、 ステートメント実行のリクエスト と、 ステートメント実行のステータスをチェックするリクエスト の200応答に含まれています。 このヘッダーは、結果の他のパーティション(例: 最初のパーティション、最後のパーティションなど)へのリンクを提供します。ヘッダーには、返すパーティションを指定する異なる 例: |
応答本文のオブジェクトの型¶
CancelStatus¶
CancelStatus は、ステートメントの実行のキャンセルに関する情報を含む JSON オブジェクトです。このオブジェクトは、 キャンセルリクエスト の応答の本文で返されます。
フィールド¶
フィールド |
説明 |
|---|---|
|
型: 文字列 |
|
型: 文字列 |
例: |
型: 文字列 |
|
実行中のステートメントの一意な識別子。 型: 文字列(UUID) 例: |
|
ステートメントのステータスと結果セットを取得する URL。 型: 文字列(URL) 例: |
例¶
QueryFailureStatus¶
QueryFailureStatus は、ステートメントの実行の失敗に関する情報を含む JSON オブジェクトです。このオブジェクトは、 ステートメント実行のリクエスト に対する422応答の本文で返されます。
フィールド¶
フィールド |
説明 |
|---|---|
|
型: 文字列 例: |
|
型: 文字列 |
|
型: 文字列 例: |
|
実行中のステートメントの一意な識別子。 型: 文字列(UUID) 例: |
|
ステートメントの実行が開始される時刻を指定するタイムスタンプ。タイムスタンプは、エポック以降のミリ秒で表されます。 型: 64ビットの符号付き整数 例: |
|
ステートメントのステータスと結果セットを取得する URL。 型: 文字列(URL) 例: |
例¶
QueryStatus¶
QueryStatus は、ステートメントの実行のステータスに関する情報を含む JSON オブジェクトです。このオブジェクトは次のように返されます。
ステートメント実行のリクエスト に対する202および408応答の本文。
ステートメントの実行のステータスを確認するリクエスト に対する202および422応答の本文。
フィールド¶
フィールド |
説明 |
|---|---|
|
型: 文字列 例: |
|
型: 文字列 |
|
型: 文字列 例: |
|
実行中のステートメントの一意な識別子。 型: 文字列(UUID) 例: |
|
ステートメントの実行が開始される時刻を指定するタイムスタンプ。タイムスタンプは、エポック以降のミリ秒で表されます。 型: 64ビットの符号付き整数 例: |
|
ステートメントのステータスと結果セットを取得する URL。 型: 文字列(URL) 例: |
例¶
ResultSet¶
ResultSet は、ステートメントの実行の結果を含む JSON オブジェクトです。このオブジェクトは、 ステートメント実行のリクエスト と、 ステートメント実行のステータスをチェックするリクエスト の200応答の本文に含まれています。
フィールド¶
フィールド |
説明 |
|---|---|
|
型: 文字列 例: |
|
型: 文字列 |
|
型: 文字列 例: |
|
実行中のステートメントの一意な識別子。 リクエストで複数のステートメントが指定された場合、このハンドルはそれらのステートメントのセットに対応します。リクエストにある個々のステートメントのハンドルについては、 型: 文字列(UUID) 例: |
|
このリクエストに対して実行されているステートメントの一意な識別子の配列。 型: 文字列の配列(UUID) 例: |
|
ステートメントの実行が開始される時刻を指定するタイムスタンプ。タイムスタンプは、エポック以降のミリ秒で表されます。 例: |
|
ステートメントのステータスと結果セットを取得する URL。 型: 文字列(URL) 例: |
|
返される結果セットに関するメタデータ。 型: オブジェクト(ResultSet_resultSetMetaData) |
|
リクエストに単一の SQL ステートメントが含まれている場合、 このフィールドには結果セットデータが含まれます。 結果セットの形式は、 JSON にある配列の配列です。
型: 配列の配列 例: リクエストに複数の SQL ステートメントが含まれる場合、 このフィールドには「複数のステートメントが正常に実行されました」というメッセージが含まれます。リクエスト内の各ステートメントの結果を取得するには、これらのステートメントのハンドルを |
|
DML ステートメントの場合、このフィールドには、操作によって影響を受ける行数に関する統計が含まれます。 型: オブジェクト(ResultSet_stats) |
ResultSet_resultSetMetaData¶
ResultSet_resultSetMetaData は、ステートメントの実行結果に関するメタデータを含む JSON オブジェクトです。このオブジェクトは ResultSet オブジェクトの resultSetMetaData フィールドにあります。
フィールド¶
フィールド |
説明 |
|---|---|
|
返すパーティションのインデックス番号( 詳細については、 応答からの結果の取得 をご参照ください。 |
|
結果の行の合計数。 型: 64ビットの符号付き整数 例: |
|
結果セット内のデータの形式。 型: 文字列 |
|
結果セットの列を説明する ResultSet_resultSetMetaData_rowType オブジェクトの配列。 型: ResultSet_resultSetMetaData_rowType の配列。 例: |
ResultSet_resultSetMetaData_rowType ¶
ResultSet_resultSetMetaData_rowType は、結果のセットの列を説明する JSON オブジェクトです。これらのオブジェクトの配列は、 ResultSet_resultSetMetaData オブジェクトの rowType フィールドにあります。
フィールド¶
フィールド |
説明 |
|---|---|
|
列の名前。 型: 文字列 |
|
列の Snowflakeデータ型。 型: 文字列 |
|
列の長さ。 型: 64ビットの符号付き整数 |
|
列の精度。 型: 64ビットの符号付き整数 |
|
列のスケール。 型: 64ビットの符号付き整数 |
|
列がNULL許容かどうかを指定します。 型: ブール値 |
例¶
ResultSet_stats¶
ResultSet_stats は、 DML ステートメントの実行に関する統計を含む JSON オブジェクトです。このオブジェクトは ResultSet_resultSetMetaData オブジェクトの stats フィールドにあります。
フィールド¶
フィールド |
説明 |
|---|---|
|
挿入された行数。 型: 64ビットの符号付き整数 例: |
|
更新された行数。 型: 64ビットの符号付き整数 例: |
|
削除された行数。 型: 64ビットの符号付き整数 例: |
|
更新された重複行の数。 型: 64ビットの符号付き整数 例: |