Snowpark Python: eliminação de subconsultas repetidas em consultas geradas pelo Snowpark (cancelado)¶
Atenção
Esse BCR está cancelado e removido do Pacote 2025_04.
A eliminação de subconsultas repetidas identifica subDataFrames idênticos dentro de um plano de consulta e emprega expressões de tabela comuns (CTEs) para construir a consulta final. Quase metade das consultas com tempos de compilação superiores a um segundo contém pelo menos uma subconsulta redundante. O benefício dessa otimização é dimensionado com a quantidade e complexidade das subconsultas duplicadas identificadas.
Etapas de diagnóstico:
Erro de compilação do SQL em um pipeline de dados do Snowpark que estava sendo executado sem erros anteriormente.
Resultados incorretos gerados devido a bugs na geração do SQL.
Mitigação:
Baixar para uma versão mais antiga do cliente Snowpark atenua o problema.
Desativar o parâmetro
PYTHON_SNOWPARK_USE_CTE_OPTIMIZATION_VERSIONatenua o problema.Para não serem afetados por essa mudança, mantenha os fluxos de trabalho baseados em Snowpark fixados em uma versão do Snowpark Python inferior a 1.31.1. Por exemplo, se você estiver usando um procedimento armazenado Python, defina
PACKAGES=('snowflake-snowpark-python==1.30.0')ao criar o procedimento armazenado. No caso de um notebook Snowflake ou planilha Python, mude para uma versão do Snowpark Python anterior à 1.31.1.
Para demonstrar a diferença entre o comportamento antigo e o novo, considere as seguintes transformações do DataFrame no Snowpark Python:
- Antes da mudança:
Porque o
union_allacima está usando o mesmo DataFramedf1duas vezes, as consultas SQL geradas repetirão a subconsulta subjacente duas vezes:- Após a mudança:
A otimização detectará que
df1está sendo usado duas vezes, substituirá a subconsulta por uma expressão CTE e a usará para criar a consulta:
Ref: 1995