Notas de lançamento da Biblioteca Snowpark para Python para 2025¶
Este artigo contém as notas de versão do Snowpark Library for Python, incluindo o seguinte, quando aplicável:
Mudanças de comportamento
Novos recursos
Correções de bugs voltados para o cliente
Snowflake usa controle de versão semântico para atualizações de Snowpark Library for Python.
Consulte Guia do desenvolvedor de Snowpark para Python para ver a documentação.
Aviso
Como o Python 3.8 atingiu o Fim da vida útil, avisos de descontinuação serão acionados ao usar o snowpark-python com o Python 3.8. Para obter mais informações, consulte Suporte de tempo de execução Snowflake Python. O Snowpark Python 1.24.0 será a última versão de cliente e servidor a oferecer suporte ao Python 3.8, de acordo com a política do Anaconda. Atualize seus objetos Python 3.8 existentes para Python 3.9 ou superior.
Versão 1.37.0: 18 de agosto de 2025¶
Novos recursos¶
Adição de suporte para as seguintes funções
xpath
emfunctions.py
:xpath
xpath_string
xpath_boolean
xpath_int
xpath_float
xpath_double
xpath_long
xpath_short
Adição de suporte para o parâmetro
use_vectorized_scanner
na funçãoSession.write_arrow()
.O criador de perfil DataFrame adiciona as seguintes informações sobre cada consulta:
describe query time
,execution time
esql query text
. Para visualizar estas informações, chamesession.dataframe_profiler.enable()
e chameget_execution_profile
em um DataFrame.Adição de suporte para
DataFrame.col_ilike
.Adição de suporte para chamadas de procedimento armazenado sem bloqueio que retornam objetos
AsyncJob
.Adição do parâmetro
block: bool = True
aSession.call()
. Quandoblock=False
, retorna umAsyncJob
em vez de bloquear até a conclusão.Adição do parâmetro
block: bool = True
aStoredProcedure.__call__()
para suporte assíncrono em procedimentos armazenados nomeados e anônimos.Adição de
Session.call_nowait()
que é equivalente aSession.call(block=False)
.
Correções de bugs¶
Correção de um bug no estágio de otimização CTE em que
deepcopy
dos planos internos causaria um pico de memória quando um DataFrame fosse criado localmente usandosession.create_dataframe()
usando muitos dados de entrada.Correção de um bug em
DataFrameReader.parquet
em que a opçãoignore_case
noinfer_schema_options
não era respeitada.Correção de um bug em que
to_pandas()
tinha um formato diferente de nome de coluna quando o formato de resultado da consulta estava definido comoJSON
eARROW
.
Preterições¶
pkg_resources
obsoleto.
Atualizações de dependências¶
Adição de uma dependência em
protobuf<6.32
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte para transferência eficiente de dados entre o Snowflake e <Ray com o método
DataFrame.set_backend
. A versão instalada domodin
deve ser pelo menos 0.35.0 eray
deve ser instalado.
Atualizações de dependências¶
Atualização das versões do modin com suporte para >=0.34.0 e <0.36.0 (was previously >= 0.33.0 e <0.35.0).
Adição de suporte para pandas 2.3 quando a versão do modin instalada é 0.35.0 ou superior.
Correções de bugs¶
Correção de um problema no modo de execução híbrida (versão preliminar privada) em que
pd.to_datetime
epd.to_timedelta
gerariamIndexError
inesperadamente.Correção de um bug em que
pd.explain_switch
gerariaIndexError
ou retornariaNone
se chamado antes da execução de qualquer operação de troca potencial.
Versão 1.36.0: 5 de agosto de 2025¶
Novos recursos¶
Session.create_dataframe
agora aceita argumentos de palavra-chave que são encaminhados na chamada interna paraSession.write_pandas
ouSession.write_arrow
ao criar um DataFrame de um pandas DataFrame ou uma tabelapyarrow
.Adição de novas APIs para AsyncJob:
AsyncJob.is_failed()
retorna um booliano indicando se um trabalho falhou. Pode ser usado em combinação comAsyncJob.is_done()
para determinar se um trabalho foi concluído e falhou.AsyncJob.status()
retorna uma cadeia de caracteres que representa o status atual da consulta (como «RUNNING», «SUCCESS», «FAILED_WITH_ERROR») para monitoramento detalhado sem chamarresult()
.
Adição de um criador de perfil DataFrame. Para usar, você pode chamar
get_execution_profile()
em seu DataFrame desejado. Este criador de perfil relata as consultas executadas para avaliar um DataFrame e estatísticas e sobre cada um dos operadores de consulta. Atualmente um recurso experimental.Adição de suporte para as seguintes funções em
functions.py
:ai_sentiment
Atualização da interface para o recurso experimental
context.configure_development_features
. Todos os recursos de desenvolvimento são desabilitados por padrão, a menos que seja explicitamente habilitado pelo usuário.
Melhorias¶
Melhorias na estimativa da linha de execução híbrida e uma redução de chamadas adiantadas.
Adição de uma nova variável de configuração para controlar os custos de transferência do Snowflake ao usar a execução híbrida.
Adição de suporte para criação de UDFs/UDTFs permanentes e imutáveis com DataFrame/Series/GroupBy.apply, mapa e transformação passando o argumento de palavra-chave
snowflake_udf_params
.Adição de suporte para
mapping np.unique
a DataFrame entradas e série usandopd.unique
.
Correções de bugs¶
Correção de um problema em que o plugin Snowpark pandas desativava incondicionalmente
AutoSwitchBackend
, mesmo quando os usuários o tivessem configurado explicitamente de forma programática ou com variáveis de ambiente.
Versão 1.35.0: 24 de julho de 2025¶
Novos recursos¶
Adição de suporte para as seguintes funções em
functions.py
:ai_embed
try_parse_json
Melhorias¶
Melhoria do parâmetro
query
emDataFrameReader.dbapi
(versão preliminar privada) para que não sejam necessários parênteses ao redor da consulta.Melhoria da experiência de erro em
DataFrameReader.dbapi
(versão preliminar privada) para exceções geradas ao inferir o esquema da fonte de dados de destino.
Correções de bugs¶
Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada) que falha emdbapi
com código de saída do processo 1 em um procedimento armazenado Python.Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada), em quecustom_schema
aceita um esquema ilegal.Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada), em quecustom_schema
não funciona ao conectar-se ao Postgres e ao MySQL.Correção de um bug na inferência de esquema que faz com que ele falhe em estágios externos.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adição de suporte de teste local para leitura de arquivos com
SnowflakeFile
. O suporte de teste usa caminhos de arquivo locais, a semântica Snow URL (snow://...
), estágios de estrutura de teste local e estágios do Snowflake (@stage/file_path
).
Versão 1.34.0: 14 de julho de 2025¶
Novos recursos¶
Adição de uma nova opção
TRY_CAST
aDataFrameReader
. QuandoTRY_CAST
éTrue
, as colunas são delimitadas em uma instruçãoTRY_CAST
em vez de uma conversão física ao carregar dados.Adição de uma nova opção
USE_RELAXED_TYPES
aoINFER_SCHEMA_OPTIONS
DataFrameReader
. Quando definida comoTrue
, esta opção converte todas as cadeias de caracteres em cadeias de caracteres de comprimento máximo e todos os tipos numéricos emDoubleType
.Adição de melhorias de depuração para validar imediatamente os metadados do esquema de dataframe. Habilite usando
snowflake.snowpark.context.configure_development_features()
.Adição de uma nova função
snowflake.snowpark.dataframe.map_in_pandas
que permite aos usuários mapear uma função em um dataframe. A função de mapeamento usa um iterador do pandas DataFrames como entrada e fornece um como saída.Adição de um
ttl cache
para descrever consultas. Consultas repetidas em um intervalo de 15 segundos usam o valor armazenado em cache em vez de consultar novamente o Snowflake.Adição de um parâmetro
fetch_with_process
aDataFrameReader.dbapi
(PrPr) para ativar o multiprocessamento para obtenção de dados paralelos em ingestão local. Por padrão, a ingestão local usa multithreading. O multiprocessamento pode melhorar o desempenho para tarefas vinculadas a CPU, como geração de arquivo Parquet.Adição de uma nova função
snowflake.snowpark.functions.model
, que permite aos usuários chamar métodos de um modelo.
Melhorias¶
Adição de suporte para validação de linha usando esquema XSD usando a opção
rowValidationXSDPath
ao ler arquivos XML com uma tag de linha usando a opçãorowTag
.Melhoria da geração SQL para
session.table().sample()
para gerar uma instrução SQL simples.Adição de suporte para expressão de coluna complexa como entrada para
functions.explode
.Adição de melhorias de depuração para mostrar a quais linhas Python um erro de compilação SQL corresponde. Habilite usando
snowflake.snowpark.context.configure_development_features()
. Esse recurso também depende da habilitação de de coleções AST na sessão, o que pode ser feito usandosession.ast_enabled = True
.Definir
enforce_ordering=True
ao chamarto_snowpark_pandas():code:
de um Snowpark DataFrame contendo consultas DML/DDL em vez de lançar umNotImplementedError
.
Correções de bugs¶
Correção de um bug causado por validação redundante ao criar uma tabela Iceberg.
Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada), em que fechar o cursor ou a conexão poderia gerar um erro inesperadamente e encerrar o programa.Correção de erros de coluna ambígua ao usar funções de tabela em
DataFrame.select()
que têm colunas de saída correspondentes às colunas do DataFrame de entrada. Essa melhoria funciona quando as colunas DataFrame são fornecidas como objetosColumn
.Correção de um bug em que ter um NULL em uma coluna com DecimalTypes converteria a coluna em FloatTypes e levaria à perda de precisão.
Atualizações de testes locais do Snowpark¶
Correção de um bug ao processar funções em janela que levam à indexação incorreta em resultados.
Quando um numérico escalar é passado para
fillna
, o Snowflake ignorará as colunas não numéricas em vez de produzir um erro.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adicionado suporte para
DataFrame.to_excel
eSeries.to_excel
.Adição de suporte para
pd.read_feather
,pd.read_orc
epd.read_stata
.Adição de suporte para
pd.explain_switch()
para retornar informações de depuração sobre decisões de execução híbrida.Suporte a
pd.read_snowflake
quando o backend do modin global éPandas
.Adição de suporte para
pd.to_dynamic_table
,pd.to_iceberg
epd.to_view
.
Melhorias¶
Adição de telemetria do modin em chamadas de API e alternações de mecanismo híbrido.
Mostra mensagens de erro mais úteis aos usuários do notebook Snowflake quando a versão do
modin
oupandas
não corresponde aos nossos requisitos.Adição de uma proteção de tipo de dados às funções de custo para modo de execução híbrida (versão preliminar privada) que verifica a compatibilidade de tipos de dados.
Adição da alternância automática ao backend do pandas no modo de execução híbrida (versão preliminar privada) para muitos métodos que não são implementados diretamente no pandas on Snowflake.
Definir o
type
e outros campos padrão para a telemetria do pandas on Snowflake.
Atualizações de dependências¶
Adição de
tqdm
eipywidgets
como dependências para que barras de progresso apareçam quando o usuário alterna entre backends de modin.Atualização de versões compatíveis do
modin
para >=0.33.0 e <0.35.0 (was previously >= 0.32.0 e <0.34.0).
Correções de bugs¶
Correção de um bug no modo de execução híbrida (versão preliminar privada), em que certas operações da série geravam
TypeError: numpy.ndarray object is not callable
.Correção de um bug no modo de execução híbrida (versão preliminar privada), em que a chamada de operações
numpy
comonp.where
em objetos modin com o backend do Pandas geraria umAttributeError
. Esta correção requer omodin
versão 0.34.0 ou posterior.Correção de um problema no
df.melt
, em que os valores resultantes têm um sufixo adicional aplicado.
Versão 1.33.0 (19/06/2019)¶
Novos recursos¶
Adição de suporte para MySQL em
DataFrameWriter.dbapi
(versão preliminar privada) para Parquet e ingestão baseada em UDTF.Adição de suporte para PostgreSQL em
DataFrameReader.dbapi
(versão preliminar privada) para Parquet e ingestão baseada em UDTF.Adição de suporte para Databricks no
DataFrameWriter.dbapi
(versão preliminar privada) para ingestão baseada em UDTF, consolidando com outras menções de suporte a Databricks.Adição de suporte a
DataFrameReader
para habilitar o uso dePATTERN
ao ler arquivos comINFER_SCHEMA
habilitado.Adição de suporte para as seguintes funções baseadas em AI no
functions.py
:ai_complete
ai_similarity
ai_summarize_agg
(originalmentesummarize_agg
)diferentes opções de configuração para
ai_classify
Adição de suporte para mais opções ao ler arquivos XML com uma tag de linha usando a opção
rowTag
:Adição de suporte para remover prefixos de namespace de nomes de colunas usando a opção
ignoreNamespace
.Adição de suporte para especificar o prefixo para a coluna de atributo na tabela de resultados usando a opção
attributePrefix
.Suporte adicionado para excluir atributos do elemento XML usando a opção
excludeAttributes
.Adição de suporte para especificar o nome da coluna para o valor quando há atributos em um elemento que não tem elementos filho usando a opção
valueTag
.Adição de suporte para especificar o valor a ser tratado como um valor nulo usando a opção
nullValue
.Adição de suporte para especificar a codificação de caracteres do arquivo XML usando a opção
charset
.Adição de suporte para ignorar espaços em branco ao redor no elemento XML usando a opção
ignoreSurroundingWhitespace
.
Adição de suporte ao parâmetro
return_dataframe
emSession.call
, que pode ser usado para definir o tipo de retorno das funções para um objetoDataFrame
.Adição de um novo argumento a
Dataframe.describe
chamadostrings_include_math_stats
que acionastddev
emean
a serem calculados para colunas da cadeia de caracteres.Adição de suporte para recuperar
Edge.properties
ao recuperar a linhagem deDGQL
emDataFrame.lineage.trace
.Adição de um parâmetro
table_exists
aDataFrameWriter.save_as_table
, que permite especificar se uma tabela já existe. Isso permite pular uma pesquisa de tabela que pode ser cara.
Correções de bugs¶
Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada), em quecreate_connection
definida como função local era incompatível com multiprocessamento.Correção de um bug em
DataFrameReader.dbapi
(versão preliminar privada), em que o tipoTIMESTAMP
do Databricks foi convertido no tipoTIMESTAMP_NTZ
do Snowflake que deve ser o tipoTIMESTAMP_LTZ
.Correção de um bug em
DataFrameReader.json
, em que leituras repetidas com o mesmo objeto de leitor criariam colunas entre aspas incorretamente.Correção de um bug em
DataFrame.to_pandas()
que removeria nomes de colunas ao converter um DataFrame que não se originou de uma instrução selecionada.Correção de um bug em que
DataFrame.create_or_replace_dynamic_table
gera um erro quando DataFrame contém um UDTF eSELECT *
no UDTF não é analisado corretamente.Correção de um bug em que colunas convertidas não podiam ser usadas na cláusula de valores das funções.
Melhorias¶
Melhoria da mensagem de erro de
Session.write_pandas()
eSession.create_dataframe()
quando o DataFrame de entrada do pandas não tem uma coluna.Melhoria de
DataFrame.select
quando os argumentos contêm uma função de tabela com colunas de saída que colidem com colunas do DataFrame atual. Com a melhoria, se o usuário fornecer colunas sem colisão emdf.select("col1", "col2", table_func(...))
como argumentos de cadeia de caracteres, a consulta gerada pelo cliente Snowpark não gerará um erro de coluna ambígua.Melhoria de
DataFrameReader.dbapi
(versão preliminar privada) para usar a ingestão baseada em Parquet na memória para melhor desempenho e segurança.Melhoria de
DataFrameReader.dbapi
(versão preliminar privada) para usarMATCH_BY_COLUMN_NAME=CASE_SENSITIVE
na operação de cópia para tabela.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adição de suporte para snow URLs (
snow://
) em testes de arquivo local.
Correções de bugs¶
Correção de um bug em
Column.isin
que causaria filtragem incorreta em dados unidos ou previamente filtrados.Correção de um bug em
snowflake.snowpark.functions.concat_ws
que faria com que os resultados tivessem um índice incorreto.
Atualizações da Snowpark pandas API¶
Atualizações de dependências¶
Atualização de restrição de dependência de
modin
de 0.32.0 para >=0.32.0, <0.34.0. A versão mais recente testada com o Snowpark pandas émodin
0.33.1.
Novos recursos¶
Adição de suporte para Execução híbrida (versão preliminar privada). Ao executar
from modin.config import AutoSwitchBackend; AutoSwitchBackend.enable()
, o pandas on Snowflake escolhe automaticamente se vai executar determinadas operações do pandas localmente ou no Snowflake. Este recurso está desabilitado por padrão.
Melhorias¶
Defina o valor padrão do parâmetro
index
comoFalse
paraDataFrame.to_view
,Series.to_view
,DataFrame.to_dynamic_table
eSeries.to_dynamic_table
.Adição da opção
iceberg_version
a funções de criação de tabela.Contagem de consultas reduzida para muitas operações, incluindo
insert
,repr
egroupby
, que anteriormente emitiu uma consulta para recuperar o tamanho dos dados de entrada.
Correções de bugs¶
Correção de um bug em
Series.where
quando o parâmetroother
é umSeries
sem nome.
Versão 1.32.0 (2025-05-15)¶
Melhorias¶
A invocação dos procedimentos do sistema Snowflake não invoca uma chamada adicional do
describe procedure
para verificar o tipo de retorno do procedimento.Foi adicionado suporte para
Session.create_dataframe()
com o URL de estágio e tipo de dadosFILE
.Foi adicionado suporte a diferentes modos para lidar com registros corrompidos XML ao ler um arquivo XML usando
session.read.option('mode', <mode>), option('rowTag', <tag_name>).xml(<stage_file_path>)
. Atualmente,PERMISSIVE
,DROPMALFORMED
eFAILFAST
são compatíveis.Aprimorou a mensagem de erro do leitor de XML quando o
ROWTAG
especificado não é encontrado no arquivo.Melhoria na geração de consultas para que o
Dataframe.drop
useSELECT * EXCLUDE ()
para excluir as colunas descartadas. Para ativar esse recurso, definasession.conf.set("use_simplified_query_generation", True)
.Adição de suporte para
VariantType
aStructType.from_json
.
Correções de bugs¶
Corrigido um bug em
DataFrameWriter.dbapi
(versão preliminar privada) em que os nomes de colunas unicode ou com aspas duplas em bancos de dados externos causavam erros porque não eram citados corretamente.Corrigido um bug em que os campos nomeados nos dados aninhados do
OBJECT
podiam causar erros quando continham espaços.
Atualizações de testes locais do Snowpark¶
Correções de bugs¶
Corrigido um bug no
snowflake.snowpark.functions.rank
que não respeitava a direção de classificação.Corrigido um bug no
snowflake.snowpark.functions.to_timestamp_*
que causava resultados incorretos em dados filtrados.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte a valores dict em
Series.str.get
,Series.str.slice
eSeries.str.__getitem__
(Series.str[...]
).Adição de suporte para
DataFrame.to_html
.Adicionado suporte para
DataFrame.to_string
eSeries.to_string
.Foi adicionado suporte para leitura de arquivos de compartimentos S3 usando
pd.read_csv
.
Melhorias¶
Tornar
iceberg_config
um parâmetro obrigatório paraDataFrame.to_iceberg
eSeries.to_iceberg
.
Versão 1.31.0 (2025-04-24)¶
Novos recursos¶
Foi adicionado suporte para a permissão
restricted caller
do argumentoexecute_as
emStoredProcedure.register():code:
.Foi adicionado suporte a instruções não selecionadas em
DataFrame.to_pandas()
.Foi adicionado suporte ao parâmetro
artifact_repository
aSession.add_packages
,Session.add_requirements
,Session.get_packages
,Session.remove_package
eSession.clear_packages
.Foi adicionado suporte à leitura de um arquivo XML usando uma tag de linha por
session.read.option('rowTag', <tag_name>).xml(<stage_file_path>)
(experimental).Cada registro do XML é extraído como uma linha separada.
Cada campo dentro desse registro se torna uma coluna separada do tipo
VARIANT
, que pode ser consultada posteriormente usando a notação de ponto, comocol(a.b.c)
.
Atualizações adicionadas ao
DataFrameReader.dbapi
(PrPr):Foi adicionado o parâmetro
fetch_merge_count
para otimizar o desempenho, mesclando vários dados obtidos em um único arquivo Parquet.Adição de suporte para Databricks.
Foi adicionado suporte para ingestão com o UDTF do Snowflake.
Adição de suporte para as seguintes funções potencializadas por AI em
functions.py
(versão preliminar privada):prompt
ai_filter
(adicionado suporte para a funçãoprompt()
e arquivos de imagem, e alterado o nome do segundo argumento deexpr
parafile
)ai_classify
Melhorias¶
Você renomeou o parâmetro
relaxed_ordering
paraenforce_ordering
paraDataFrame.to_snowpark_pandas
. Além disso, o novo valor padrão éenforce_ordering=False
, que tem o efeito oposto do valor padrão anterior,relaxed_ordering=False
.Melhoria do desempenho de leitura de
DataFrameReader.dbapi
(PrPr) ao definir o valor padrão do parâmetrofetch_size
para 1000.Melhoria da mensagem de erro de SQL do identificador inválido, sugerindo os identificadores potencialmente correspondentes.
Redução do número de consultas de descrição emitidas ao criar um DataFrame a partir de uma tabela Snowflake usando
session.table
.Melhoria de desempenho e precisão de
DataFrameAnalyticsFunctions.time_series_agg()
.
Correções de bugs¶
Corrigido um bug em
DataFrame.group_by().pivot().agg
quando a coluna dinâmica e a coluna agregada são as mesmas.Corrigido um bug em
DataFrameReader.dbapi
(PrPr) em que umTypeError
era acionado quandocreate_connection
retornava um objeto de conexão de um tipo de driver não suportado.Corrigido um bug em que a chamada
df.limit(0)
não era aplicada corretamente.Corrigido um bug em
DataFrameWriter.save_as_table
que fazia com que os nomes reservados gerassem erros ao usar o modo append.
Preterições¶
Suporte obsoleto para Python 3.8.
Argumento obsoleto
sliding_interval
emDataFrameAnalyticsFunctions.time_series_agg()
.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Foi adicionado suporte para a expressão Intervalo a
Window.range_between
.Foi adicionado suporte à função
array_construct
.
Correções de bugs¶
Corrigido um erro nos testes locais em que o diretório
__pycache__
transitório era copiado involuntariamente durante a execução do procedimento armazenado via importação.Corrigido um bug nos testes locais que criava um resultado incorreto para as chamadas
Column.like
.Corrigido um erro nos testes locais que fazia com que
Column.getItem
esnowpark.snowflake.functions.get
gerassemIndexError
em vez de retornarnull
.Corrigido um bug nos testes locais em que a chamada
df.limit(0)
não era aplicada corretamente.Corrigido um bug nos testes locais em que um
Table.merge
em uma tabela vazia causava uma exceção.
Atualizações da Snowpark pandas API¶
Atualizações de dependências¶
Atualização de
modin
de 0.30.1 para 0.32.0.Foi adicionado suporte para
numpy
2.0 e superior.
Novos recursos¶
Adicionado suporte para
DataFrame.create_or_replace_view
eSeries.create_or_replace_view
.Adicionado suporte para
DataFrame.create_or_replace_dynamic_table
eSeries.create_or_replace_dynamic_table
.Adicionado suporte para
DataFrame.to_view
eSeries.to_view
.Adicionado suporte para
DataFrame.to_dynamic_table
eSeries.to_dynamic_table
.Foi adicionado suporte para
DataFrame.groupby.resample
para as agregaçõesmax
,mean
,median
,min
esum
.Foi adicionado suporte à leitura de arquivos de estágio usando:
pd.read_excel
pd.read_html
pd.read_pickle
pd.read_sas
pd.read_xml
Adicionado suporte para
DataFrame.to_iceberg
eSeries.to_iceberg
.Foi adicionado suporte a valores dict em
Series.str.len
.
Melhorias¶
Melhoria do desempenho de
DataFrame.groupby.apply
eSeries.groupby.apply
evitando a etapa de pivô dispendiosa.Foi adicionada uma estimativa para o limite superior da contagem de linhas ao
OrderedDataFrame
para permitir uma melhor troca de mecanismo. Isso pode resultar em um aumento no número de consultas.Você renomeou o parâmetro
relaxed_ordering
emenforce_ordering
parapd.read_snowflake
. Além disso, o novo valor padrão éenforce_ordering=False
, que tem o efeito oposto do valor padrão anterior,relaxed_ordering=False
.
Correções de bugs¶
Corrigido um erro em
pd.read_snowflake
ao ler tabelas de iceberg eenforce_ordering=True
.
Versão 1.30.0 (2025-03-27)¶
Novos recursos¶
Adicionado suporte a garantias relaxadas de consistência e ordenação em
Dataframe.to_snowpark_pandas
com a introdução do parâmetrorelaxed_ordering
.DataFrameReader.dbapi
(versão preliminar) agora aceita uma lista de cadeias de caracteres para o parâmetrosession_init_statement
, permitindo que várias instruções SQL sejam executadas durante a inicialização da sessão.
Melhorias¶
Melhoria na geração de consultas para
Dataframe.stat.sample_by
para gerar uma única consulta simples que se adapta bem a um grande dicionáriofractions
em comparação com o método antigo de criar uma subconsulta UNION ALL para cada chave emfractions
. Para ativar esse recurso, definasession.conf.set("use_simplified_query_generation", True)
.Melhoria do desempenho de
DataFrameReader.dbapi
ao ativar a opção vetorizada ao copiar um arquivo parquet em uma tabela.A geração de consultas para
DataFrame.random_split
foi aprimorada das seguintes maneiras. Elas podem ser ativadas com a configuraçãosession.conf.set("use_simplified_query_generation", True)
:Removida a necessidade de
cache_result
na implementação interna do dataframe de entrada, resultando em uma operação pura de dataframe preguiçoso.O argumento
seed
agora se comporta como esperado, com resultados repetíveis em várias chamadas e sessões.
DataFrame.fillna
eDataFrame.replace
agora suportam o ajuste deint
efloat
nas colunasDecimal
seinclude_decimal
estiver definido comoTrue
.Foi adicionada documentação para as seguintes funções de procedimento armazenado e UDF em
files.py
como resultado de sua disponibilidade geral.SnowflakeFile.write
SnowflakeFile.writelines
SnowflakeFile.writeable
Pequenas alterações na documentação para
SnowflakeFile
eSnowflakeFile.open()
.
Correções de bugs¶
Corrigido um bug nas seguintes funções que geravam erros.
.cast()
é aplicado à saída delas:from_json
size
Atualizações de testes locais do Snowpark¶
Correções de bugs¶
Corrigido um bug na agregação que fazia com que grupos vazios ainda produzissem linhas.
Corrigido um bug em
Dataframe.except_
que fazia com que as linhas fossem descartadas incorretamente.Corrigido um bug que fazia com que
to_timestamp
falhasse ao converter colunas filtradas.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte para valores de lista em
Series.str.__getitem__
(Series.str[...]
).Foi adicionado suporte a objetos
pd.Grouper
em operações GROUP BY. Quandofreq
é especificado, os valores padrão dos argumentossort
,closed
,label
econvention
são compatíveis;origin
é compatível quando éstart
oustart_day
.Foi adicionado suporte para consistência relaxada e garantias de ordenação em
pd.read_snowflake
para fontes de dados nomeadas (por exemplo, tabelas e exibições) e fontes de dados de consulta, introduzindo o novo parâmetrorelaxed_ordering
.
Melhorias¶
Emite um aviso sempre que
QUOTED_IDENTIFIERS_IGNORE_CASE
estiver definido e solicita ao usuário que o desfaça.Foi aprimorada a forma como um
index_label
ausente emDataFrame.to_snowflake
eSeries.to_snowflake
é tratado quandoindex=True
. Em vez de criar umValueError
, os rótulos definidos pelo sistema são usados para as colunas de índice.Foi aprimorada a mensagem de erro para
groupby
,DataFrame
ouSeries.agg
quando o nome da função não é compatível.
Atualizações de testes locais do Snowpark¶
Melhorias¶
Emite um aviso sempre que
QUOTED_IDENTIFIERS_IGNORE_CASE
estiver definido e solicita ao usuário que o desfaça.Foi aprimorada a forma como um
index_label
ausente emDataFrame.to_snowflake
eSeries.to_snowflake
é tratado quandoindex=True
. Em vez de criar umValueError
, os rótulos definidos pelo sistema são usados para as colunas de índice.Mensagem de erro aprimorada para
groupby or DataFrame or Series.agg
quando o nome da função não é compatível.
Versão 1.29.1 (2025-03-12)¶
Correções de bugs¶
Corrigido um bug em
DataFrameReader.dbapi
(versão preliminar privada) que impedia o uso em procedimentos armazenados e Snowbooks.
Versão 1.29.0 (2025-03-05)¶
Novos recursos¶
Adição de suporte para as seguintes funções potencializadas por AI em
functions.py
(versão preliminar privada):ai_filter
ai_agg
summarize_agg
Foi adicionado suporte ao novo tipo FILE SQL, com as seguintes funções relacionadas em
functions.py
(versão preliminar privada):
fl_get_content_type
fl_get_etag
fl_get_file_type
fl_get_last_modified
fl_get_relative_path
fl_get_scoped_file_url
fl_get_size
fl_get_stage
fl_get_stage_file_url
fl_is_audio
fl_is_compressed
fl_is_document
fl_is_image
fl_is_video
Foi adicionado suporte à importação de pacotes de terceiros do PyPi usando o repositório de artefatos (versão preliminar privada):
Uso de argumentos de palavra-chave
artifact_repository
epackages
para especificar seu repositório de artefatos e pacotes, respectivamente, ao registrar procedimentos armazenados ou funções definidas pelo usuário.APIs compatíveis:
Session.sproc.register
Session.udf.register
Session.udaf.register
Session.udtf.register
functions.sproc
functions.udf
functions.udaf
functions.udtf
functions.pandas_udf
functions.pandas_udtf
Melhorias¶
Aprimoramento dos avisos de validação de versão para compatibilidade com o pacote
snowflake-snowpark-python
ao registrar procedimentos armazenados. Agora, os avisos só são acionados se a versão principal ou secundária não corresponder, enquanto as diferenças de versão de correção de erros não geram mais avisos.Atualizada a dependência do cloudpickle para oferecer suporte também ao
cloudpickle==3.0.0
, além das versões anteriores.
Correções de bugs¶
Corrigido um bug que fazia com que a criação de um Dataframe com um grande número de valores gerasse o erro
Unsupported feature 'SCOPED_TEMPORARY'.
se a sessão thread-safe estivesse desativada.Corrigido um bug em que
df.describe
gerava um erro interno de execução SQL quando o DataFrame era criado a partir da leitura de um arquivo de estágio e a otimização de CTE estava ativada.Corrigido um bug em que
df.order_by(A).select(B).distinct()
gerava um SQL inválido quando a geração de consultas simplificadas era ativada usando osession.conf.set("use_simplified_query_generation", True)
.
Desativada a geração de consultas simplificadas por padrão.
Atualizações da Snowpark pandas API¶
Melhorias¶
Melhoria da mensagem de erro para
pd.to_snowflake
,DataFrame.to_snowflake
eSeries.to_snowflake
quando a tabela não existir.Melhoria da legibilidade do docstring para o parâmetro
if_exists
empd.to_snowflake
,DataFrame.to_snowflake
eSeries.to_snowflake
.Melhoria da mensagem de erro para todas as funções pandas que usam UDFs com objetos Snowpark.
Correções de bugs¶
Corrigido um bug em
Series.rename_axis
em que umAttributeError
estava sendo criado.Corrigido um bug em que
pd.get_dummies
não ignorava os valores de NULL/NaN por padrão.Corrigido um bug em que chamadas repetidas para
pd.get_dummies
resultavam em ‘Erro de nome de coluna duplicado’.Corrigido um bug em
pd.get_dummies
em que a passagem da lista de colunas gerava rótulos de coluna incorretos na saída DataFrame.Atualização do
pd.get_dummies
para retornar valores bool em vez de int.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Foi adicionado suporte a valores literais à função de janela
range_between
.
Versão 1.28.0 (2025-02-20)¶
Novos recursos¶
Adição de suporte para as seguintes funções em
functions.py
normal
randn
Foi adicionado suporte ao parâmetro
allow_missing_columns
paraDataframe.union_by_name
eDataframe.union_all_by_name
.
Melhorias¶
Melhoria na geração de nomes de objetos aleatórios para evitar colisões.
Melhoria na geração de consultas para
Dataframe.distinct
para gerar SELECT DISTINCT em vez de SELECT com GROUP BY todas as colunas. Para desativar esse recurso, definasession.conf.set("use_simplified_query_generation", False)
.
Preterições¶
Função
snowflake_cortex_summarize
obsoleta do Snowpark Python. Os usuários podem instalar osnowflake-ml-python
e usar a funçãosnowflake.cortex.summarize
em seu lugar.Função
snowflake_cortex_sentiment
obsoleta do Snowpark Python. Os usuários podem instalar osnowflake-ml-python
e usar a funçãosnowflake.cortex.sentiment
em seu lugar.
Correções de bugs¶
Corrigido um bug em que a tag de consulta no nível da sessão era substituída por um rastreamento de pilha para DataFrames que gera várias consultas. Agora, a tag de consulta só será definida para o stacktrace se
session.conf.set("collect_stacktrace_in_query_tag", True)
.Corrigido um erro em
Session._write_pandas
, que passava erroneamente o parâmetrouse_logical_type
paraSession._write_modin_pandas_helper
ao gravar um objeto pandas do Snowpark.Corrigido um bug nas geração de SQL de opções que poderia fazer com que vários valores fossem formatados incorretamente.
Corrigido um bug em
Session.catalog
em que cadeias de caracteres vazias para banco de dados ou esquema não eram tratadas corretamente e geravam instruções SQL errôneas.
Recursos experimentais¶
Foi adicionado suporte para gravação de tabelas pyarrow em tabelas Snowflake.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Foi adicionado suporte para a aplicação das funções
Summarize
eSentiment
do Snowflake Cortex.Adição de suporte para valores de lista em
Series.str.get
.
Correções de bugs¶
Corrigido um bug em
apply
em que os kwargs não estavam sendo passados corretamente para a função aplicada.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
- Foi adicionado suporte para as seguintes funções
hour
minute
Foi adicionado suporte para o parâmetro NULL_IF ao leitor CSV.
Foi adicionado suporte às opções
date_format
,datetime_format
etimestamp_format
ao carregar CSVs.
Correções de bugs¶
Foi corrigido um bug em
DataFrame.join
que fazia com que as colunas tivessem uma digitação incorreta.Corrigido um bug nas instruções
when
que causava resultados incorretos na cláusulaotherwise
.
Versão 1.27.0 (05/02/2025)¶
Novos recursos¶
Adição de suporte para as seguintes funções em functions.py
:
array_reverse
divnull
map_cat
map_contains_key
map_keys
nullifzero
snowflake_cortex_sentiment
acosh
asinh
atanh
bit_length
bitmap_bit_position
bitmap_bucket_number
bitmap_construct_agg
cbrt
equal_null
from_json
ifnull
localtimestamp
max_by
min_by
nth_value
nvl
octet_length
position
regr_avgx
regr_avgy
regr_count
regr_intercept
regr_r2
regr_slope
regr_sxx
regr_sxy
regr_syy
try_to_binary
base64
base64_decode_string
base64_encode
editdistance
hex
hex_encode
instr
log1p
log2
log10
percentile_approx
unbase64
Adição de suporte para a especificação de uma cadeia de caracteres de esquema (incluindo a sintaxe de estrutura implícita) ao chamar
DataFrame.create_dataframe
.Adição de suporte para
DataFrameWriter.insert_into/insertInto
. Esse método também é compatível com o modo de teste local.Adição de suporte para
DataFrame.create_temp_view
para criar uma visualização temporária. Isso falhará se a visualização já existir.Adição de suporte para várias colunas nas funções
map_cat
emap_concat
.Adição de uma opção
keep_column_order
para manter a ordem original das colunas emDataFrame.with_column
eDataFrame.with_columns
.Adição de opções às conversões por cast de coluna que permitem renomear ou adicionar campos nas colunas de
StructType
.Adição de suporte para
contains_null parameter
aArrayType
.Adição de suporte para a criação de uma visualização temporária via
DataFrame.create_or_replace_temp_view
a partir de um DataFrame criado pela leitura de um arquivo de um estágio.Adição de suporte para o parâmetro
value_contains_null
aMapType
.Adicionado interativo à telemetria que indica se o ambiente atual é interativo.
Permitir que
session.file.get
em um Native App leia caminhos de arquivos que começam com/a partir da versão atualAdição de suporte para várias funções de agregação após
DataFrame.pivot
.
Recursos experimentais¶
Adicionada a classe
Session.catalog
para gerenciar objetos Snowflake. Ela pode ser acessada viaSession.catalog
.snowflake.core
é uma dependência necessária para esse recurso.
Permissão do esquema de entrada do usuário ou esquemas de entrada do usuário ao ler o arquivo JSON no estágio.
Adição de suporte para a especificação de uma cadeia de caracteres de esquema (incluindo a sintaxe de estrutura implícita) ao chamar
DataFrame.create_dataframe
.
Melhorias¶
Atualização de
README.md
para incluir instruções sobre como verificar as assinaturas de pacotes usando ocosign
.
Correções de bugs¶
Correção de um bug no modo de teste local que fazia com que uma coluna contivesse Nenhum quando deveria conter 0.
Correção de um bug em
StructField.from_json
que impedia queTimestampTypes
comtzinfo
fosse analisado corretamente.Correção de um bug em
function date_format
que causava um erro quando a coluna de entrada era do tipo data ou carimbo de data/hora.Corrigido um bug em DataFrame que permitia a inserção de valores nulos em uma coluna não nula.
Corrigido um bug nas funções
replace
elit
que gerava erro de asserção de dica de tipo ao passar objetos de expressão de coluna.Corrigido um bug em
pandas_udf
epandas_udtf
em que os parâmetros de sessão eram erroneamente ignorados.Corrigido um bug que gerava um erro de conversão de tipo incorreto para a função do sistema chamada por meio do site
session.call
.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adicionado suporte para
Series.str.ljust
eSeries.str.rjust
.Adição de suporte para
Series.str.center
.Adição de suporte para
Series.str.pad
.Foi adicionado suporte para a aplicação da função Python do Snowpark
snowflake_cortex_sentiment
.Adição de suporte para
DataFrame.map
.Adicionado suporte para
DataFrame.from_dict
eDataFrame.from_records
.Adição de suporte para nomes de campo com letras maiúsculas e minúsculas em colunas do tipo estruturadas.
Adição de suporte para
SeriesGroupBy.unique
Adição de suporte para
Series.dt.strftime
com as seguintes diretivas:%d: dia do mês como um número decimal com zeros.
%m: mês como um número decimal com zeros.
%Y: ano com século como um número decimal.
%H: hora (relógio de 24 horas) como um número decimal com zeros.
%M: minuto como um número decimal com zeros.
%S: segundo como um número decimal com zeros.
%f: microssegundo como um número decimal, com preenchimento de zeros para 6 dígitos.
%j: dia do ano como um número decimal com zeros.
%X: representação de hora apropriada da localidade.
%%: Um caractere literal “%”.
Adição de suporte para
Series.between
.Adição de suporte para
include_groups=False
emDataFrameGroupBy.apply
.Adição de suporte para
expand=True
emSeries.str.split
.Adicionado suporte para
DataFrame.pop
eSeries.pop
.Adição de suporte para
first
elast
emDataFrameGroupBy.agg
eSeriesGroupBy.agg
.Adição de suporte para
Index.drop_duplicates
.Adição de suporte para agregações
"count"
,"median"
,np.median
,"skew"
,"std"
,np.std
"var"
enp.var
empd.pivot_table()
,DataFrame.pivot_table()
epd.crosstab()
.
Melhorias¶
Melhorou o desempenho dos métodos
DataFrame.map
,Series.apply
eSeries.map
mapeando as funções numpy para as funções do Snowpark, se possível.Adição de documentação para
DataFrame.map
.Melhorou o desempenho do site
DataFrame.apply
mapeando as funções numpy para as funções do Snowpark, se possível.Adição de documentação sobre a extensão da interoperabilidade do Snowpark pandas com o scikit-learn.
Inferência do tipo de retorno das funções em
Series.map
,Series.apply
eDataFrame.map
se a dica de tipo não for fornecida.Adição de
call_count
à telemetria que conta as chamadas de método, incluindo as chamadas de protocolo de intercâmbio.