Formatador de SQL para Snowflake
Cole uma consulta Snowflake e receba SQL limpo e legível. A sintaxe específica do Snowflake, como QUALIFY, FLATTEN e acesso por caminho a VARIANT, é preservada, e variáveis de bind :name são detectadas como parâmetros.
Uma consulta Snowflake, antes e depois
A consulta sem formatação abaixo é o exemplo carregado no editor acima, e a saída é exatamente o que este formatador devolve para ela com as opções padrão. Nada foi ajustado à mão.
WITH ranked AS (SELECT customer_id, order_id, total, src:shipping.country::string AS country, row_number() OVER (PARTITION BY customer_id ORDER BY total DESC) AS rn FROM orders WHERE order_ts >= :start_date AND region = :region) SELECT customer_id, order_id, total, country FROM ranked WHERE rn = 1 AND total > :min_total QUALIFY row_number() OVER (ORDER BY total DESC) <= 100 ORDER BY total DESC WITH
ranked AS (
SELECT
customer_id,
order_id,
total,
src:shipping.country::STRING AS country,
row_number() OVER (
PARTITION BY
customer_id
ORDER BY
total DESC
) AS rn
FROM
orders
WHERE
order_ts >=:start_date
AND region =:region
)
SELECT
customer_id,
order_id,
total,
country
FROM
ranked
WHERE
rn = 1
AND total >:min_total
QUALIFY
row_number() OVER (
ORDER BY
total DESC
) <= 100
ORDER BY
total DESC Sintaxe do Snowflake que ele trata
Um formatador genérico destrói a sintaxe específica do dialeto ou simplesmente a recusa. Estas são as construções do Snowflake contra as quais este formatador é testado.
QUALIFY Reconhecida como limite de cláusula, então editar um WHERE nunca passa dela.
src:path.to.field O acesso por caminho a VARIANT é preservado e não é confundido com uma variável de bind :name.
:name Variáveis de bind são detectadas e agrupadas como parâmetros preenchíveis.
LATERAL FLATTEN(...) A expansão de dados semiestruturados mantém a forma da cláusula.
Perguntas frequentes do formatador de Snowflake
Ele suporta QUALIFY?
Sim. O QUALIFY é tratado como uma cláusula de verdade, então é formatado corretamente e a cláusula WHERE que você edita para antes dele.
Caminhos VARIANT vão ser confundidos com variáveis de bind?
Caminhos com dois-pontos em dados semiestruturados são tratados como parte da expressão, então o acesso normal a VARIANT não é reportado como parâmetro.
Posso editar o WHERE de uma única CTE?
Sim. Cada WHERE da consulta é listado pela CTE que o contém, então uma consulta Snowflake de várias etapas dá uma entrada por etapa. Ao editar uma, a nova condição é inserida apenas naquela cláusula e nada mais na consulta se mexe.
LATERAL FLATTEN sobrevive à formatação?
Sim. Uma chamada LATERAL FLATTEN mantém o formato de cláusula e a seta de argumento nomeado em vez de ser reformatada como uma função comum dentro do FROM, então a expansão de dados semiestruturados continua legível.
Dá para minificar uma consulta Snowflake?
Sim. Embelezar e minificar estão disponíveis, e a minificação deixa os literais de texto byte a byte como estavam — o que importa quando a consulta volta para um procedimento armazenado ou para a definição de uma task, onde mudar um literal muda o comportamento.
E os blocos do Snowflake Scripting?
Os comandos SQL de dentro são formatados normalmente, enquanto o controle de fluxo com BEGIN e END passa direto em vez de ser reindentado como se fosse sintaxe de consulta. Para um único SELECT, o caso usual nesta página, isso nem chega a aparecer.