Referência da API de SQL do Snowflake¶
Este tópico documenta as operações, solicitações e respostas para a API de SQL.
Neste tópico:
Operações¶
POST /api/v2/statements
¶
Para enviar uma ou mais instruções SQL para execução, envie uma solicitação POST para /api/v2/statements
. Você pode especificar que a instrução deve ser executada de forma assíncrona.
Sintaxe da solicitação¶
POST /api/v2/statements
(request body)
Parâmetros de consulta¶
Parâmetro |
Descrição |
---|---|
|
(Opcional) ID única (uma UUID) da solicitação da API. Consulte Como reenviar uma solicitação para executar instruções SQL. |
|
(Opcional) Definir como Se o parâmetro não for especificado ou for definido como falso, uma instrução é executada e os resultados são retornados se a execução for concluída em 45 segundos. Se a execução da instrução demorar mais tempo para ser concluída, o identificador da instrução é retornado. |
|
(Opcional) Definir como Nota Você não pode especificar esse parâmetro em uma solicitação GET. Por padrão, valores NULL de SQL são retornados como o valor "data" : [ [ null ], ... ]
A definição desse parâmetro de consulta como falso (por exemplo, "data" : [ [ "null" ], ... ]
|
Cabeçalhos de solicitação¶
A solicitação deve incluir os cabeçalhos listados em Cabeçalhos de solicitação para todas as operações.
Corpo da solicitação¶
(Obrigatório) O corpo da solicitação deve conter o objeto especificado em Corpo da solicitação POST para /api/v2/statements/.
Resposta¶
Essa operação pode retornar os códigos de resposta listados abaixo.
Código |
Descrição |
---|---|
200 |
A instrução foi executada com sucesso. Para esse código de resposta, a resposta pode ter os seguintes cabeçalhos: Se uma única instrução SQL tiver sido apresentada na solicitação, o corpo da resposta conterá um objeto ResultSet com os dados solicitados. Nota Se o campo A seguir, veja um exemplo de uma resposta para uma única instrução SQL na qual os resultados são retornados em uma única partição. HTTP/1.1 200 OK
Date: Tue, 04 May 2021 18:06:24 GMT
Content-Type: application/json
Link:
</api/v2/statements/{handle}?requestId={id1}&partition=0>; rel="first",
</api/v2/statements/{handle}?requestId={id2}&partition=0>; rel="last"
{
"resultSetMetaData" : {
"numRows" : 4,
"format" : "jsonv2",
"rowType" : [ {
"name" : "COLUMN1",
"database" : "",
"schema" : "",
"table" : "",
"scale" : null,
"precision" : null,
"length" : 4,
"type" : "text",
"nullable" : false,
"byteLength" : 16,
"collation" : null
}, {
"name" : "COLUMN2",
"database" : "",
"schema" : "",
"table" : "\"VALUES\"",
"scale" : 0,
"precision" : 1,
"length" : null,
"type" : "fixed",
"nullable" : false,
"byteLength" : null,
"collation" : null
} ],
"partitionInfo": [{
"rowCount": 4,
"uncompressedSize": 1438,
}]
},
"data" : [ [ "test", "2" ], [ "test", "3" ], [ "test", "4" ], [ "test", "5" ] ],
"code" : "090001",
"statementStatusUrl" : "/api/v2/statements/{handle}?requestId={id3}&partition=0",
"sqlState" : "00000",
"statementHandle" : "{handle}",
"message" : "Statement executed successfully.",
"createdOn" : 1620151584132
}
A seguir, veja um exemplo de uma resposta para uma única instrução SQL na qual os resultados precisam ser retornados em várias partições, onde HTTP/1.1 200 OK
Date: Tue, 04 May 2021 18:08:15 GMT
Content-Type: application/json
Link:
</api/v2/statements/{handle}?requestId={id1}&partition=0>; rel="first",
</api/v2/statements/{handle}?requestId={id2}&partition=1>; rel="next",
</api/v2/statements/{handle}?requestId={id3}&partition=1>; rel="last"
{
"resultSetMetaData" : {
"numRows" : 56090,
"format" : "jsonv2",
"rowType" : [ {
"name" : "SEQ8()",
"database" : "",
"schema" : "",
"table" : "",
"scale" : 0,
"precision" : 19,
"length" : null,
"type" : "fixed",
"nullable" : false,
"byteLength" : null,
"collation" : null
}, {
"name" : "RANDSTR(1000, RANDOM())",
"database" : "",
"schema" : "",
"table" : "",
"scale" : null,
"precision" : null,
"length" : 16777216,
"type" : "text",
"nullable" : false,
"byteLength" : 16777216,
"collation" : null
} ],
"partitionInfo": [{
"rowCount": 12344,
"uncompressedSize": 14384873,
},{
"rowCount": 43746,
"uncompressedSize": 43748274,
"compressedSize": 746323
}]
},
"data" : [ [ "0", "QqKow2xzdJ....." ],.... [ "98", "ZugTcURrcy...." ] ],
"code" : "090001",
"statementStatusUrl" : "/api/v2/statements/{handle}?requestId={id4}",
"sqlState" : "00000",
"statementHandle" : "{handle}",
"message" : "Statement executed successfully.",
"createdOn" : 1620151693299
}
Se várias instruções SQL tiverem sido apresentadas na solicitação, o corpo da resposta conterá um objeto ResultSet com detalhes sobre o status da execução das diversas instruções. Nesse caso, a resposta não conterá os dados solicitados. Em vez disso, o campo A resposta contém o campo A seguir, você vê um exemplo de resposta para uma solicitação que especifica múltiplas instruções SQL, onde:
HTTP/1.1 200 OK
Date: Mon, 31 May 2021 22:50:31 GMT
Content-Type: application/json
Link:
</api/v2/statements/{handle}?requestId={id1}&partition=0>; rel="first",
</api/v2/statements/{handle}?requestId={id2}&partition=1>; rel="last"
{
"resultSetMetaData" : {
"numRows" : 56090,
"format" : "jsonv2",
"rowType" : [ {
"name" : "multiple statement execution",
"database" : "",
"schema" : "",
"table" : "",
"type" : "text",
"scale" : null,
"precision" : null,
"byteLength" : 16777216,
"nullable" : false,
"collation" : null,
"length" : 16777216
} ],
"partitionInfo": [{
"rowCount": 12344,
"uncompressedSize": 14384873,
},{
"rowCount": 43746,
"uncompressedSize": 43748274,
"compressedSize": 746323
}]
},
"data" : [ [ "Multiple statements executed successfully." ] ],
"code" : "090001",
"statementHandles" : [ "{handle1}", "{handle2}", "{handle3}" ],
"statementStatusUrl" : "/api/v2/statements/{handle}?requestId={id3}",
"sqlState" : "00000",
"statementHandle" : "{handle}",
"message" : "Statement executed successfully.",
"createdOn" : 1622501430333
}
|
202 |
A execução da instrução ainda está em andamento. Use O corpo da resposta contém um objeto QueryStatus com detalhes sobre o status da execução da instrução. A seguir você vê um exemplo de resposta: HTTP/1.1 202 Accepted
Date: Tue, 04 May 2021 18:12:37 GMT
Content-Type: application/json
Content-Length: 285
{
"code" : "333334",
"message" :
"Asynchronous execution in progress. Use provided query id to perform query monitoring and management.",
"statementHandle" : "019c06a4-0000-df4f-0000-00100006589e",
"statementStatusUrl" : "/api/v2/statements/019c06a4-0000-df4f-0000-00100006589e"
}
|
408 |
A execução da instrução excedeu o período de tempo limite. A execução da instrução foi cancelada. O corpo da resposta contém um objeto QueryStatus com detalhes sobre o cancelamento da execução da instrução. |
422 |
Ocorreu um erro ao executar a instrução. Verifique o código de erro e a mensagem de erro para obter detalhes. O corpo da resposta contém um objeto QueryFailureStatus com detalhes sobre o erro. A seguir você vê um exemplo de resposta: HTTP/1.1 422 Unprocessable Entity
Date: Tue, 04 May 2021 20:24:11 GMT
Content-Type: application/json
{
"code" : "000904",
"message" : "SQL compilation error: error line 1 at position 7\ninvalid identifier 'AFAF'",
"sqlState" : "42000",
"statementHandle" : "019c0728-0000-df4f-0000-00100006606e"
}
|
Para obter os outros códigos de resposta retornados por essa operação, consulte Códigos de resposta para todas as operações.
GET /api/v2/statements/{statementHandle}
¶
Para verificar o status da execução de uma instrução, envie uma solicitação GET para /api/v2/statements/{statementHandle}
. Se a instrução tiver sido executada com sucesso, o corpo da resposta incluirá um objeto ResultSet contendo os dados solicitados.
Sintaxe da solicitação¶
GET /api/v2/statements/{statementHandle}
Parâmetros de caminho¶
Parâmetro |
Descrição |
---|---|
|
(Necessário) O identificador da instrução que você deseja verificar. Você pode obter esse identificador do objeto QueryStatus retornado na resposta à solicitação para executar a instrução. |
Parâmetros de consulta¶
|
(Opcional) ID única (uma UUID) da solicitação da API. Consulte Como reenviar uma solicitação para executar instruções SQL. |
---|---|
|
(Opcional) O número de partição a ser retornado. O tamanho de cada partição é determinado pelo Snowflake. Consulte Como obter os resultados da resposta para obter mais informações. |
Cabeçalhos de solicitação¶
A solicitação deve incluir os cabeçalhos listados em Cabeçalhos de solicitação para todas as operações.
Resposta¶
Essa operação pode retornar os códigos de resposta listados abaixo.
Código |
Descrição |
---|---|
200 |
A instrução foi executada com sucesso. Para esse código de resposta, a resposta pode ter os seguintes cabeçalhos: O corpo da resposta tem um objeto ResultSet contendo os dados solicitados. O seguinte é um exemplo de resposta, onde HTTP/1.1 200 OK
Date: Tue, 04 May 2021 20:25:46 GMT
Content-Type: application/json
Link:
</api/v2/statements/{handle}?requestId={id1}&partition=0>; rel="first",
</api/v2/statements/{handle}?requestId={id2}&partition=0>; rel="prev",
</api/v2/statements/{handle}?requestId={id3}&partition=1>; rel="next",
</api/v2/statements/{handle}?requestId={id4}&partition=10>; rel="last"
{
"resultSetMetaData" : {
"numRows" : 10000,
"format" : "jsonv2",
"rowType" : [ {
"name" : "SEQ8()",
"database" : "",
"schema" : "",
"table" : "",
"scale" : 0,
"precision" : 19,
"length" : null,
"type" : "fixed",
"nullable" : false,
"byteLength" : null,
"collation" : null
}, {
"name" : "RANDSTR(1000, RANDOM())",
"database" : "",
"schema" : "",
"table" : "",
"scale" : null,
"precision" : null,
"length" : 16777216,
"type" : "text",
"nullable" : false,
"byteLength" : 16777216,
"collation" : null
} ],
"partitionInfo": [{
"rowCount": 12344,
"uncompressedSize": 14384873,
},{
"rowCount": 43746,
"uncompressedSize": 43748274,
"compressedSize": 746323
}]
},
"data" : [ [ "10", "lJPPMTSwps......" ], ... [ "19", "VJKoHmUFJz......" ] ],
"code" : "090001",
"statementStatusUrl" : "/api/v2/statements/{handle}?requestId={id5}&partition=10",
"sqlState" : "00000",
"statementHandle" : "{handle}",
"message" : "Statement executed successfully.",
"createdOn" : 1620151693299
}
|
202 |
A execução da instrução ainda está em andamento. Repita a solicitação para verificar o status da execução da instrução. O corpo da resposta contém um objeto QueryStatus com detalhes sobre o status da execução da instrução. A seguir você vê um exemplo de resposta: HTTP/1.1 202 Accepted
Date: Tue, 04 May 2021 22:31:33 GMT
Content-Type: application/json
Content-Length: 285
{
"code" : "333334",
"message" :
"Asynchronous execution in progress. Use provided query id to perform query monitoring and management.",
"statementHandle" : "019c07a7-0000-df4f-0000-001000067872",
"statementStatusUrl" : "/api/v2/statements/019c07a7-0000-df4f-0000-001000067872"
}
|
422 |
Ocorreu um erro ao executar a instrução. Verifique o código de erro e a mensagem de erro para obter detalhes. O corpo da resposta contém um objeto QueryFailureStatus com detalhes sobre o erro. |
Para obter os outros códigos de resposta retornados por essa operação, consulte Códigos de resposta para todas as operações.
POST /api/v2/statements/{statementHandle}/cancel
¶
Para cancelar a execução de uma instrução, envie uma solicitação POST para /api/v2/statements/{statementHandle}/cancel
.
Sintaxe da solicitação¶
POST /api/v2/statements/{statementHandle}/cancel
Parâmetros de caminho¶
Parâmetro |
Descrição |
---|---|
|
(Necessário) O identificador da instrução que você deseja verificar. Você pode obter esse identificador do objeto QueryStatus retornado na resposta à solicitação para executar a instrução. |
Parâmetros de consulta¶
Parâmetro |
Descrição |
---|---|
|
(Opcional) ID única (uma UUID) da solicitação da API. Consulte Como reenviar uma solicitação para executar instruções SQL. |
Cabeçalhos de solicitação¶
A solicitação deve incluir os cabeçalhos listados em Cabeçalhos de solicitação para todas as operações.
Resposta¶
Essa operação pode retornar os códigos de resposta listados abaixo.
Código |
Descrição |
---|---|
200 |
A execução da instrução foi cancelada com sucesso. O corpo da resposta contém um objeto CancelStatus que contém informações sobre o cancelamento da instrução. A seguir você vê um exemplo de resposta: HTTP/1.1 200 OK
Date: Tue, 04 May 2021 22:52:15 GMT
Content-Type: application/json
Content-Length: 230
{
"code" : "000604",
"sqlState" : "57014",
"message" : "SQL execution canceled",
"statementHandle" : "019c07bc-0000-df4f-0000-001000067c3e",
"statementStatusUrl" : "/api/v2/statements/019c07bc-0000-df4f-0000-001000067c3e"
}
|
422 |
Ocorreu um erro ao executar a instrução. Verifique o código de erro e a mensagem de erro para obter detalhes. O corpo da resposta contém um objeto QueryFailureStatus com detalhes sobre o erro. A seguir você vê um exemplo de resposta: HTTP/1.1 422 Unprocessable Entity
Date: Tue, 04 May 2021 22:52:49 GMT
Content-Type: application/json
Content-Length: 183
{
"code" : "000709",
"message" : "Statement 019c07bc-0000-df4f-0000-001000067c3e not found",
"sqlState" : "02000",
"statementHandle" : "019c07bc-0000-df4f-0000-001000067c3e"
}
|
Para obter os outros códigos de resposta retornados por essa operação, consulte Códigos de resposta para todas as operações.
Cabeçalhos de solicitação para todas as operações¶
Os seguintes cabeçalhos de solicitação se aplicam a todas as operações:
Cabeçalho |
Obrigatório ou opcional? |
Descrição |
---|---|---|
|
Obrigatório |
Defina esse valor como
Por exemplo:
Consulte Autenticação no servidor. |
|
Obrigatório |
Defina esse valor como a lista de tipos de mídia (tipos MIME) que são aceitáveis no corpo da resposta. Inclua o tipo |
|
Obrigatório |
Defina esse valor como o tipo de mídia (tipo MIME) do corpo da resposta. Defina esse valor como |
|
Obrigatório |
Defina esse valor como o nome e a versão de seu aplicativo (por exemplo, |
|
Necessário para autenticação com par de chaves Opcional para OAuth |
Se você estiver usando uma autenticação com par de chaves, esse cabeçalho é obrigatório. Você deve definir esse cabeçalho como Se você estiver usando OAuth para autenticação, esse cabeçalho é opcional. (Se você escolher definir este cabeçalho, defina-o como |
Tipos de objetos no corpo da solicitação¶
Corpo da solicitação POST
para /api/v2/statements/
¶
O corpo de uma solicitação POST
para o ponto de extremidade /api/v2/statements/
(consulte POST /api/v2/statements) é um objeto JSON que você usa para especificar a instrução SQL a ser executada, o contexto da instrução e o formato dos dados no conjunto de resultados. Você usa esse objeto no corpo de uma solicitação para executar uma instrução.
Campos¶
Campo |
Descrição |
---|---|
|
(Opcional) Instrução SQL a executar. Consulte Limitações da API de SQL para obter as listas de instruções que são suportadas e não suportadas. Tipo: cadeia de caracteres |
|
(Opcional) Tempo limite em segundos para a execução da instrução. Se a execução de uma instrução demorar mais do que o tempo limite especificado, a execução é automaticamente cancelada. Para definir o tempo limite para o valor máximo (604800 segundos), defina o tempo limite como 0. Se esse campo não estiver definido, será usado o tempo limite especificado pelo parâmetro STATEMENT_TIMEOUT_IN_SECONDS. Tipo: integer assinado de 64 bits Exemplo: |
|
(Opcional) Base de dados na qual a instrução deve ser executada. O valor nesse campo diferencia entre maiúsculas e minúsculas. Se você omitir este campo, a API do SQL utilizará o banco de dados da propriedade Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Esquema no qual a instrução deve ser executada. O valor nesse campo diferencia entre maiúsculas e minúsculas. Se você omitir este campo, a API do SQL utilizará o esquema do valor da propriedade Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Warehouse a ser usado ao executar a instrução. O valor nesse campo diferencia entre maiúsculas e minúsculas. Se você omitir este campo, a API do SQL utilizará o valor da propriedade Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Função a ser usada ao executar a instrução. O valor nesse campo diferencia entre maiúsculas e minúsculas. Se você omitir este campo, a API do SQL utilizará o valor da propriedade Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Valores das variáveis de vinculação na instrução SQL. Ao executar a instrução, o Snowflake substitui os placeholders ( Observe que o formato desse campo pode mudar para o lançamento GA da API do SQL. Tipo: objeto Exemplo: {"1":{"type":"FIXED","value":"123"},"2":{"type":"TEXT","value":"teststring"}}
|
|
(Opcional) Parâmetros de sessão que você deseja definir para essa solicitação. Tipo: objeto (statements_parameters) |
Exemplo¶
A seguir, veja um exemplo do objeto do corpo:
{
"statement" : "select * from T where c1=?",
"timeout" : 10,
"database" : "TESTDB",
"schema" : "TESTSCHEMA",
"warehouse" : "TESTWH",
"role" : "TESTROLE",
"bindings" : {
"1" : {
"type" : "FIXED",
"value" : "123"
}
}
}
statements_parameters
¶
statements_parameters
é um objeto JSON que você usa para especificar os parâmetros de sessão que você deseja definir para esta solicitação. Esse objeto deve estar no campo parameters
do corpo da solicitação POST
para o ponto de extremidade /api/v2/statements
(consulte Corpo da solicitação POST para /api/v2/statements/).
Nota
A API do SQL somente oferecem suporte para os parâmetros de sessão listados na tabela a seguir.
Campos¶
Campo |
Descrição |
---|---|
|
(Opcional) Especifica o formato para valores VARCHAR retornados como saída por funções de conversão de BINARY para VARCHAR. Para obter mais detalhes, consulte BINARY_OUTPUT_FORMAT. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o tamanho máximo de cada conjunto (ou parte) de resultados de consulta para download (em MB). Para obter mais detalhes, consulte CLIENT_RESULT_CHUNK_SIZE. Tipo: inteiro Exemplo: |
|
(Opcional) Especifica o formato de exibição para o tipo de dados DATE. Para obter mais detalhes, consulte DATE_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Obrigatório ao especificar mais de uma instrução SQL em uma solicitação) Especifica o número de instruções SQL a serem enviadas em uma solicitação ao usar a capacidade de múltiplas instruções. Os valores válidos são:
Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Tag de consulta que você deseja associar com a instrução SQL. Para obter mais detalhes, consulte o parâmetro QUERY_TAG. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o número máximo de linhas retornadas em um conjunto de resultados, com 0 (padrão) significando sem máximo. Para obter mais detalhes, consulte o parâmetro ROWS_PER_RESULTSET. Tipo: inteiro Exemplo: 200 |
|
(Opcional) Especifica o formato de exibição para o tipo de dados TIME. Para obter mais detalhes, consulte TIME_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o formato de exibição para o tipo de dados TIMESTAMP_LTZ. Para obter mais detalhes, consulte TIMESTAMP_LTZ_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o formato de exibição para o tipo de dados TIMESTAMP_NTZ. Para obter mais detalhes, consulte TIMESTAMP_NTZ_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o formato de exibição para o alias de tipo de dados TIMESTAMP. Para obter mais detalhes, consulte TIMESTAMP_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Especifica o formato de exibição para o tipo de dados TIMESTAMP_TZ. Para obter mais detalhes, consulte TIMESTAMP_TZ_OUTPUT_FORMAT. Consulte Formatação da saída dos resultados da consulta para obter detalhes sobre o uso de parâmetros para determinar o formato de saída dos resultados da consulta. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Fuso horário a ser usado ao executar a instrução. Para obter mais detalhes, consulte o parâmetro TIMEZONE. Tipo: cadeia de caracteres Exemplo: |
|
(Opcional) Se os resultados da consulta podem ser reutilizados entre sucessivas invocações da mesma consulta, desde que o resultado original não tenha expirado. Para obter mais detalhes, consulte o parâmetro USE_CACHED_RESULT Tipo: cadeia de caracteres Exemplo: |
Códigos de resposta para todas as operações¶
Esta seção lista os códigos de resposta que se aplicam a todas as operações.
Código |
Descrição |
---|---|
400 |
Solicitação incorreta. A carga útil da solicitação é inválida ou malformada. Isso acontece se o aplicativo não tiver enviado a carga útil de solicitação correta. O corpo de resposta pode incluir o código de erro e a mensagem indicando a causa real. O aplicativo deve reconstituir o corpo da solicitação para nova tentativa. A seguir você vê um exemplo de resposta: HTTP/1.1 400 Bad Request
Date: Tue, 04 May 2021 22:54:21 GMT
Content-Type: application/json
{
"code" : "390142",
"message" : "Incoming request does not contain a valid payload."
}
|
401 |
Não autorizado. O pedido não é autorizado. Isso acontece se o token de acesso anexado for inválido ou estiver faltando. O corpo de resposta pode incluir o código de erro e a mensagem indicando a causa real, como expirado ou token inválido. O aplicativo deve obter um novo token de acesso para nova tentativa. Consulte Autenticação no servidor. A seguir você vê um exemplo de resposta: HTTP/1.1 401 Unauthorized
Date: Tue, 04 May 2021 20:17:57 GMT
Content-Type: application/json
{
"code" : "390303",
"message" : "Invalid OAuth access token. ...TTTTTTTT"
}
|
403 |
Proibido. A solicitação é proibida. Isso acontece se a solicitação for feito mesmo que a API não esteja habilitada. |
404 |
Não encontrado. O ponto de extremidade da solicitação não é válido. Isso acontece se o ponto de extremidade da API estiver errado. Por exemplo, se o aplicativo solicita |
405 |
Método não permitido. O método de solicitação não corresponde à API suportada. Isso acontece, por exemplo, se o aplicativo chamar a API com o método GET, mas o ponto de extremidade aceitar apenas POST. O aplicativo deve usar um método suportado ao enviar o pedido. A seguir você vê um exemplo de resposta: HTTP/1.1 405 Method Not Allowed
Date: Tue, 04 May 2021 22:55:38 GMT
Content-Length: 0
|
415 |
O cabeçalho da solicitação A API somente oferece suporte para |
429 |
Excesso de solicitações. O número de solicitações atingiu o limite de taxa. O aplicativo deve reduzir a frequência das solicitações enviadas para os pontos de extremidade da API. O aplicativo pode tentar novamente com retirada. Recomenda-se usar uma retirada exponencial com jitter. Essa resposta também pode ocorrer quando o servidor recebe solicitações simultâneas em excesso. Os limites de simultaneidade da API são determinados pelos limites de simultaneidade impostos pelo Snowflake. A seguir você vê um exemplo de resposta: HTTP/1.1 429 Too many requests
Content-Type: application/json
Content-Length: 69
{
"code" : "390505",
"message" : "Too many requests."
}
|
500 |
Erro interno do servidor. O servidor encontrou um erro irrecuperável no sistema. O corpo de resposta pode incluir o código e a mensagem do erro para maior orientação. |
503 |
Serviço indisponível. A solicitação não foi processada devido ao esgotamento do tempo limite no servidor. O aplicativo pode tentar novamente com retirada. Recomenda-se usar uma retirada exponencial com jitter. |
504 |
Tempo limite do gateway. A solicitação não foi processada devido ao esgotamento do tempo limite no servidor. O aplicativo pode tentar novamente com retirada. Recomenda-se usar uma retirada exponencial com jitter. |
Cabeçalhos de resposta para todas as operações¶
As respostas podem conter os seguintes cabeçalhos:
Cabeçalho |
Descrição |
---|---|
|
Esse cabeçalho está na resposta 200 para uma solicitação para executar a instrução e uma solicitação para verificar o status da execução de uma instrução. Esse cabeçalho fornece links para outras partições de resultados (por exemplo, a primeira partição, a última partição, etc.). O cabeçalho pode incluir múltiplas entradas de URL com diferentes valores de atributos Por exemplo: Link: </api/v2/statements/e127cc7c-7812-4e72-9a55-3b4d4f969840?partition=1; rel="last">,
</api/v2/statements/e127cc7c-7812-4e72-9a55-3b4d4f969840?partition=1; rel="next">,
</api/v2/statements/e127cc7c-7812-4e72-9a55-3b4d4f969840?partition=0; rel="first">
|
Tipos de objetos no corpo de resposta¶
CancelStatus
¶
CancelStatus
é um objeto JSON que contém informações sobre o cancelamento da execução de uma instrução. Esse objeto é retornado no corpo da resposta para uma solicitação de cancelamento.
Campos¶
Campo |
Descrição |
---|---|
|
Tipo: cadeia de caracteres |
|
Tipo: cadeia de caracteres |
Exemplo: |
Tipo: cadeia de caracteres |
|
Identificador único para a instrução que está sendo executada. Tipo: cadeia de caracteres (uma UUID) Exemplo: |
|
URL para obter o status da instrução e o conjunto de resultados. Tipo: cadeia de caracteres (uma URL) Exemplo: |
Exemplo¶
{
"code" : "0",
"sqlState" : "",
"message" : "successfully canceled",
"statementHandle" : "536fad38-b564-4dc5-9892-a4543504df6c",
"statementStatusUrl" : "/api/v2/statements/536fad38-b564-4dc5-9892-a4543504df6c"
}
QueryFailureStatus
¶
QueryFailureStatus é um objeto JSON que contém informações sobre uma falha na execução de uma instrução. Esse objeto é retornado no corpo da resposta 422 para uma solicitação para executar a instrução.
Campos¶
Campo |
Descrição |
---|---|
|
Tipo: cadeia de caracteres Exemplo: |
|
Tipo: cadeia de caracteres |
|
Tipo: cadeia de caracteres Exemplo: |
|
Identificador único para a instrução que está sendo executada. Tipo: cadeia de caracteres (uma UUID) Exemplo: |
|
Carimbo de data/hora que especifica quando a execução da instrução começou. O carimbo de data/hora é expresso em milissegundos desde a época. Tipo: integer assinado de 64 bits Exemplo: |
|
URL para obter o status da instrução e o conjunto de resultados. Tipo: cadeia de caracteres (uma URL) Exemplo: |
Exemplo¶
{
"code" : "002140",
"sqlState" : "42601",
"message" : "SQL compilation error",
"statementHandle" : "e4ce975e-f7ff-4b5e-b15e-bf25f59371ae",
"statementStatusUrl" : "/api/v2/statements/e4ce975e-f7ff-4b5e-b15e-bf25f59371ae"
}
QueryStatus
¶
QueryStatus
é um objeto JSON que contém informações sobre o status da execução de uma instrução. Esse objeto é retornado no seguinte:
o corpo da resposta 202 e 408 para uma solicitação para executar a instrução.
o corpo de uma resposta 202 e 422 para uma solicitação para verificar o status da execução de uma instrução.
Campos¶
Campo |
Descrição |
---|---|
|
Tipo: cadeia de caracteres Exemplo: |
|
Tipo: cadeia de caracteres |
|
Tipo: cadeia de caracteres Exemplo: |
|
Identificador único para a instrução que está sendo executada. Tipo: cadeia de caracteres (uma UUID) Exemplo: |
|
Carimbo de data/hora que especifica quando a execução da instrução começou. O carimbo de data/hora é expresso em milissegundos desde a época. Tipo: integer assinado de 64 bits Exemplo: |
|
URL para obter o status da instrução e o conjunto de resultados. Tipo: cadeia de caracteres (uma URL) Exemplo: |
Exemplo¶
{
"code" : "0",
"sqlState" : "",
"message" : "successfully executed",
"statementHandle" : "e4ce975e-f7ff-4b5e-b15e-bf25f59371ae",
"statementStatusUrl" : "/api/v2/statements/e4ce975e-f7ff-4b5e-b15e-bf25f59371ae"
}
ResultSet
¶
ResultSet
é um objeto JSON que contém os resultados da execução de uma instrução. Esse objeto é retornado no corpo da resposta 200 para uma solicitação para executar a instrução e uma solicitação para verificar o status da execução de uma instrução.
Campos¶
Campo |
Descrição |
---|---|
|
Tipo: cadeia de caracteres Exemplo: |
|
Tipo: cadeia de caracteres |
|
Tipo: cadeia de caracteres Exemplo: |
|
Identificador único para a instrução que está sendo executada. Se várias instruções tiverem sido especificadas no pedido, esse identificador corresponderá ao conjunto dessas instruções. Para os identificadores das instruções individuais na solicitação, veja o campo Tipo: cadeia de caracteres (uma UUID) Exemplo: |
|
Conjunto de identificadores únicos para as instruções que estão sendo executadas para esta solicitação. Tipo: array de cadeias de caracteres (UUID) Exemplo: |
|
Carimbo de data/hora que especifica quando a execução da instrução começou. O carimbo de data/hora é expresso em milissegundos desde a época. Exemplo: |
|
URL para obter o status da instrução e o conjunto de resultados. Tipo: cadeia de caracteres (uma URL) Exemplo: |
|
Metadados sobre o conjunto de resultados retornado. Tipo: objeto (ResultSet_resultSetMetaData) |
|
Se a solicitação contiver uma única instrução SQL, este campo contém os dados do conjunto de resultados. Um formato de conjunto de resultados é um conjunto de arrays em JSON:
Tipo: array de arrays Exemplo: [
["customer1","1234 A Avenue","98765","1565481394123000000"],
["customer2","987 B Street","98765","1565516712912012345"],
["customer3","8777 C Blvd","98765","1565605431999999999"],
["customer4","64646 D Circle","98765","1565661272000000000"]
]
Se o pedido contiver múltiplas instruções SQL, este campo conterá apenas a mensagem “Multiple statements executed successfully”. Para obter os resultados de cada instrução no pedido, obtenha as identificadores para as instruções no campo |
|
Para instruções DML, esse campo contém estatísticas sobre o número de linhas afetadas pela operação. Tipo: objeto (ResultSet_stats) |
ResultSet_resultSetMetaData
¶
ResultSet_resultSetMetaData
é um objeto JSON que contém metadados sobre os resultados da execução de uma instrução. Esse objeto está no campo resultSetMetaData
do objeto ResultSet.
Campos¶
Campo |
Descrição |
---|---|
|
O número do índice da partição que você deseja retornar (onde Consulte Como obter os resultados da resposta para obter mais informações. |
|
O número total de linhas de resultados. Tipo: integer assinado de 64 bits Exemplo: |
|
Formato dos dados no conjunto de resultados. Tipo: cadeia de caracteres |
|
Conjunto de objetos ResultSet_resultSetMetaData_rowType que descrevem as colunas no conjunto de resultados. Tipo: array de ResultSet_resultSetMetaData_rowType. Exemplo: [
{"name":"ROWNUM","type":"FIXED","length":0,"precision":38,"scale":0,"nullable":false},
{"name":"ACCOUNT_ID","type":"FIXED","length":0,"precision":38,"scale":0,"nullable":false},
{"name":"ACCOUNT_NAME","type":"TEXT","length":1024,"precision":0,"scale":0,"nullable":false},
{"name":"ADDRESS","type":"TEXT","length":16777216,"precision":0,"scale":0,"nullable":true},
{"name":"ZIP","type":"TEXT","length":100,"precision":0,"scale":0,"nullable":true},
{"name":"CREATED_ON","type":"TIMESTAMP_NTZ","length":0,"precision":0,"scale":3,"nullable":false}
]
|
ResultSet_resultSetMetaData_rowType
¶
ResultSet_resultSetMetaData_rowType
é um objeto JSON que descreve uma coluna em um conjunto de resultados. Uma array desses objetos está no campo rowType
do objeto ResultSet_resultSetMetaData.
Campos¶
Campo |
Descrição |
---|---|
|
Nome da coluna. Tipo: cadeia de caracteres |
|
Tipo de dados do Snowflake da coluna. Tipo: cadeia de caracteres |
|
Comprimento da coluna. Tipo: integer assinado de 64 bits |
|
Precisão da coluna. Tipo: integer assinado de 64 bits |
|
Escala da coluna. Tipo: integer assinado de 64 bits |
|
Especifica se a coluna é ou não anulável. Tipo: booleano |
Exemplo¶
{
"name":"ACCOUNT_NAME",
"type":"TEXT",
"length":1024,
"precision":0,
"scale":0,
"nullable":false
}
ResultSet_stats
¶
ResultSet_stats
é um objeto JSON que contém estatísticas sobre a execução de uma instrução DML. Esse objeto está no campo stats
do objeto ResultSet_resultSetMetaData.
Campos¶
Campo |
Descrição |
---|---|
|
Número de linhas que foram inseridas. Tipo: integer assinado de 64 bits Exemplo: |
|
Número de linhas que foram atualizadas. Tipo: integer assinado de 64 bits Exemplo: |
|
Número de linhas que foram eliminadas. Tipo: integer assinado de 64 bits Exemplo: |
|
Número de linhas duplicadas que foram atualizadas. Tipo: integer assinado de 64 bits Exemplo: |