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.39.1: 25 de setembro de 2025¶
Correções de bugs¶
Adicionada uma correção experimental para um bug na geração de consultas de esquema que poderia causar a geração de SQL inválido ao usar tipos estruturados aninhados.
Versão 1.39.0: 17 de setembro de 2025¶
Novos recursos¶
Rebaixada para o nível
logging.DEBUG - 1a mensagem de log informando que a referência deDataFramedo Snowpark de um objetoDataFrameReferenceinterno foi alterada.Eliminadas consultas de verificação de parâmetros duplicadas para o status de maiúsculas e minúsculas ao recuperar a sessão.
Recuperação da contagem de linhas DataFrame por meio de metadados do objeto para evitar uma consulta COUNT(*) (desempenho).
Adicionado suporte para aplicação da função
Completedo Snowflake Cortex.Introdução de pandas mais rápidos: Desempenho aprimorado com o adiamento do cálculo da posição da linha.
As seguintes operações são atualmente aceitas e podem se beneficiar da otimização:
read_snowflake,repr,loc,reset_index,mergee operações binárias.Se um objeto ocioso (por exemplo, DataFrame ou Series) depender de uma combinação de operações aceitas e não aceitas, a otimização não será utilizada.
Atualizada a mensagem de erro para quando os pandas do Snowpark são referenciados em
apply.Adição de um parâmetro de sessão
dummy_row_pos_optimization_enabledpara ativar/desativar a otimização de posição de linha fictícia em pandas mais rápidos.
Atualizações de dependências¶
Atualização das versões
modincompatíveis >=0.35.0 e <0.37.0 (was previously >=0.34.0 e <0.36.0).
Correções de bugs¶
Corrigido um problema com
drop_duplicatesem que a mesma fonte de dados podia ser lida várias vezes na mesma consulta, mas em uma ordem diferente a cada vez, resultando em linhas ausentes no resultado final. A correção garante que a fonte de dados seja lida apenas uma vez.Correção de um bug no modo de execução híbrido em que um
AssertionErrorera gerado inesperadamente por certas operações de indexação.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adição de suporte para permitir a aplicação de patches em
functions.ai_complete.
Versão 1.38.0: 4 de setembro de 2025¶
Novos recursos¶
Adição de suporte para as seguintes funções baseadas em AI no
functions.py:ai_extractai_parse_documentai_transcribe
Adicionado suporte a Time Travel para consulta de dados históricos:
Session.table()agora oferece suporte a parâmetros de Time Travel:time_travel_modestatementoffsettimestamptimestamp_typestream
DataFrameReader.table()oferece suporte aos mesmos parâmetros de Time Travel que argumentos diretos.DataFrameReaderoferece suporte ao Time Travel via encadeamento de opções (por exemplo,session.read.option("time_travel_mode", "at").option("offset", -60).table("my_table")).
Adição de suporte para especificar os seguintes parâmetros para
DataFrameWriter.copy_into_locationpara validação e gravação de dados em locais externos:validation_modestorage_integrationcredentialsencryption
Adição de suporte para
Session.directoryeSession.read.directorypara recuperar a lista de todos os arquivos em uma área de preparação com metadados.Adição de suporte para
DataFrameReader.jdbc(Private Preview), que permite ao driver JDBC ingerir fontes de dados externas.Adição de suporte para
FileOperation.copy_filespara copiar arquivos de um local de origem para uma área de preparação de saída.Adição de suporte para as seguintes funções escalares em
functions.py:all_user_namesbitandbitand_aggbitorbitor_aggbitxorbitxor_aggcurrent_account_namecurrent_clientcurrent_ip_addresscurrent_role_typecurrent_organization_namecurrent_organization_usercurrent_secondary_rolescurrent_transactiongetbit
Correções de bugs¶
Correção do
_repr_deTimestampTypepara corresponder ao subtipo real que ele representa.Correção de um bug em
DataFrameReader.dbapique fazia com que a ingestão deUDTFnão funcionasse em procedimentos armazenados.Correção de um bug na inferência de esquema que causava o uso de prefixos de área de preparação incorretos.
Melhorias¶
Aprimorado o tratamento de erros na ingestão baseada em threads de
DataFrameReader.dbapipara evitar operações desnecessárias, o que melhora a eficiência de recursos.A dependência do cloudpickle foi expandida para oferecer suporte também a
cloudpickle==3.1.1, além das versões anteriores.Desempenho de ingestão de
DataFrameReader.dbapi(versão preliminar pública) aprimorado para PostgreSQL e MySQL usando um cursor do lado do servidor para buscar dados.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Suporte concluído para as seguintes funções nos backends «Pandas» e «Ray»:
pd.read_snowflake()pd.to_iceberg()pd.to_pandas()pd.to_snowpark()pd.to_snowflake()DataFrame.to_iceberg()DataFrame.to_pandas()DataFrame.to_snowpark()DataFrame.to_snowflake()Series.to_iceberg()Series.to_pandas()Series.to_snowpark()Series.to_snowflake()nos backends «Pandas» e «Ray». Anteriormente, apenas algumas dessas funções e métodos eram aceitos no backend Pandas.
Adição de suporte para
Index.get_level_values().
Melhorias¶
O limite de transferência padrão na execução híbrida para dados que saem do Snowflake foi definido como 100k, o que pode ser substituído pela variável de ambiente
SnowflakePandasTransferThreshold. Essa configuração é apropriada para áreas de preparação com dois mecanismos disponíveis, «pandas» e «Snowflake», em cargas de trabalho relacionais.Mensagem de erro de importação aprimorada com a adição de
--upgradeapip install "snowflake-snowpark-python[modin]"na mensagem.Redução das mensagens de telemetria do cliente modin, pré-agregando-as em janelas de cinco segundos e mantendo apenas uma faixa estreita de métricas úteis para rastrear a execução híbrida e o desempenho nativo do pandas.
Definição da contagem inicial de linhas somente quando a execução híbrida estiver ativada, o que reduz o número de consultas emitidas para muitas cargas de trabalho.
Adição de um novo parâmetro de teste para testes de integração, a fim de ativar a execução híbrida.
Correções de bugs¶
Geração do parâmetro
NotImplementedErrorem vez deAttributeErrorao tentar chamar as funções/métodos de extensão do Snowflaketo_dynamic_table(),cache_result(),to_view(),create_or_replace_dynamic_table()ecreate_or_replace_view()em DataFrames ou séries usando os backends pandas ou ray.
Versão 1.37.0: 18 de agosto de 2025¶
Novos recursos¶
Adição de suporte para as seguintes funções
xpathemfunctions.py:xpathxpath_stringxpath_booleanxpath_intxpath_floatxpath_doublexpath_longxpath_short
Adição de suporte para o parâmetro
use_vectorized_scannerna funçãoSession.write_arrow().O criador de perfil DataFrame adiciona as seguintes informações sobre cada consulta:
describe query time,execution timeesql query text. Para visualizar estas informações, chamesession.dataframe_profiler.enable()e chameget_execution_profileem 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 = TrueaSession.call(). Quandoblock=False, retorna umAsyncJobem vez de bloquear até a conclusão.Adição do parâmetro
block: bool = TrueaStoredProcedure.__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
deepcopydos 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.parquetem que a opçãoignore_casenoinfer_schema_optionsnã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 comoJSONeARROW.
Preterições¶
pkg_resourcesobsoleto.
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 domodindeve ser pelo menos 0.35.0 eraydeve 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_datetimeepd.to_timedeltagerariamIndexErrorinesperadamente.Correção de um bug em que
pd.explain_switchgerariaIndexErrorou retornariaNonese 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_dataframeagora aceita argumentos de palavra-chave que são encaminhados na chamada interna paraSession.write_pandasouSession.write_arrowao 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.uniquea 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_embedtry_parse_json
Melhorias¶
Melhoria do parâmetro
queryemDataFrameReader.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 emdbapicom 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_schemaaceita um esquema ilegal.Correção de um bug em
DataFrameReader.dbapi(versão preliminar privada), em quecustom_schemanã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_CASTaDataFrameReader. QuandoTRY_CASTéTrue, as colunas são delimitadas em uma instruçãoTRY_CASTem vez de uma conversão física ao carregar dados.Adição de uma nova opção
USE_RELAXED_TYPESaoINFER_SCHEMA_OPTIONSDataFrameReader. 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_pandasque 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 cachepara 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_processaDataFrameReader.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
rowValidationXSDPathao 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=Trueao 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_exceleSeries.to_excel.Adição de suporte para
pd.read_feather,pd.read_orcepd.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_snowflakequando o backend do modin global éPandas.Adição de suporte para
pd.to_dynamic_table,pd.to_icebergepd.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
modinoupandasnã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
typee outros campos padrão para a telemetria do pandas on Snowflake.
Atualizações de dependências¶
Adição de
tqdmeipywidgetscomo 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
modinpara >=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
numpycomonp.whereem objetos modin com o backend do Pandas geraria umAttributeError. Esta correção requer omodinversã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
DataFrameReaderpara habilitar o uso dePATTERNao ler arquivos comINFER_SCHEMAhabilitado.Adição de suporte para as seguintes funções baseadas em AI no
functions.py:ai_completeai_similarityai_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_dataframeemSession.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.describechamadostrings_include_math_statsque acionastddevemeana serem calculados para colunas da cadeia de caracteres.Adição de suporte para recuperar
Edge.propertiesao recuperar a linhagem deDGQLemDataFrame.lineage.trace.Adição de um parâmetro
table_existsaDataFrameWriter.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_connectiondefinida como função local era incompatível com multiprocessamento.Correção de um bug em
DataFrameReader.dbapi(versão preliminar privada), em que o tipoTIMESTAMPdo Databricks foi convertido no tipoTIMESTAMP_NTZdo 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_tablegera 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.selectquando 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_SENSITIVEna 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.isinque causaria filtragem incorreta em dados unidos ou previamente filtrados.Correção de um bug em
snowflake.snowpark.functions.concat_wsque 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
modinde 0.32.0 para >=0.32.0, <0.34.0. A versão mais recente testada com o Snowpark pandas émodin0.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
indexcomoFalseparaDataFrame.to_view,Series.to_view,DataFrame.to_dynamic_tableeSeries.to_dynamic_table.Adição da opção
iceberg_versiona funções de criação de tabela.Contagem de consultas reduzida para muitas operações, incluindo
insert,repregroupby, que anteriormente emitiu uma consulta para recuperar o tamanho dos dados de entrada.
Correções de bugs¶
Correção de um bug em
Series.wherequando o parâmetrootheré umSeriessem 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 procedurepara 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,DROPMALFORMEDeFAILFASTsão compatíveis.Aprimorou a mensagem de erro do leitor de XML quando o
ROWTAGespecificado não é encontrado no arquivo.Melhoria na geração de consultas para que o
Dataframe.dropuseSELECT * EXCLUDE ()para excluir as colunas descartadas. Para ativar esse recurso, definasession.conf.set("use_simplified_query_generation", True).Adição de suporte para
VariantTypeaStructType.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
OBJECTpodiam causar erros quando continham espaços.
Atualizações de testes locais do Snowpark¶
Correções de bugs¶
Corrigido um bug no
snowflake.snowpark.functions.rankque 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.sliceeSeries.str.__getitem__(Series.str[...]).Adição de suporte para
DataFrame.to_html.Adicionado suporte para
DataFrame.to_stringeSeries.to_string.Foi adicionado suporte para leitura de arquivos de compartimentos S3 usando
pd.read_csv.
Melhorias¶
Tornar
iceberg_configum parâmetro obrigatório paraDataFrame.to_icebergeSeries.to_iceberg.
Versão 1.31.0 (2025-04-24)¶
Novos recursos¶
Foi adicionado suporte para a permissão
restricted callerdo argumentoexecute_asemStoredProcedure.register():code:.Foi adicionado suporte a instruções não selecionadas em
DataFrame.to_pandas().Foi adicionado suporte ao parâmetro
artifact_repositoryaSession.add_packages,Session.add_requirements,Session.get_packages,Session.remove_packageeSession.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_countpara 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):promptai_filter(adicionado suporte para a funçãoprompt()e arquivos de imagem, e alterado o nome do segundo argumento deexprparafile)ai_classify
Melhorias¶
Você renomeou o parâmetro
relaxed_orderingparaenforce_orderingparaDataFrame.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_sizepara 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().aggquando a coluna dinâmica e a coluna agregada são as mesmas.Corrigido um bug em
DataFrameReader.dbapi(PrPr) em que umTypeErrorera acionado quandocreate_connectionretornava 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_tableque fazia com que os nomes reservados gerassem erros ao usar o modo append.
Preterições¶
Suporte obsoleto para Python 3.8.
Argumento obsoleto
sliding_intervalemDataFrameAnalyticsFunctions.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.getItemesnowpark.snowflake.functions.getgerassemIndexErrorem 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.mergeem uma tabela vazia causava uma exceção.
Atualizações da Snowpark pandas API¶
Atualizações de dependências¶
Atualização de
modinde 0.30.1 para 0.32.0.Foi adicionado suporte para
numpy2.0 e superior.
Novos recursos¶
Adicionado suporte para
DataFrame.create_or_replace_vieweSeries.create_or_replace_view.Adicionado suporte para
DataFrame.create_or_replace_dynamic_tableeSeries.create_or_replace_dynamic_table.Adicionado suporte para
DataFrame.to_vieweSeries.to_view.Adicionado suporte para
DataFrame.to_dynamic_tableeSeries.to_dynamic_table.Foi adicionado suporte para
DataFrame.groupby.resamplepara as agregaçõesmax,mean,median,minesum.Foi adicionado suporte à leitura de arquivos de estágio usando:
pd.read_excelpd.read_htmlpd.read_picklepd.read_saspd.read_xml
Adicionado suporte para
DataFrame.to_icebergeSeries.to_iceberg.Foi adicionado suporte a valores dict em
Series.str.len.
Melhorias¶
Melhoria do desempenho de
DataFrame.groupby.applyeSeries.groupby.applyevitando a etapa de pivô dispendiosa.Foi adicionada uma estimativa para o limite superior da contagem de linhas ao
OrderedDataFramepara permitir uma melhor troca de mecanismo. Isso pode resultar em um aumento no número de consultas.Você renomeou o parâmetro
relaxed_orderingemenforce_orderingparapd.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_snowflakeao 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_pandascom 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_bypara gerar uma única consulta simples que se adapta bem a um grande dicionáriofractionsem 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.dbapiao ativar a opção vetorizada ao copiar um arquivo parquet em uma tabela.A geração de consultas para
DataFrame.random_splitfoi aprimorada das seguintes maneiras. Elas podem ser ativadas com a configuraçãosession.conf.set("use_simplified_query_generation", True):Removida a necessidade de
cache_resultna implementação interna do dataframe de entrada, resultando em uma operação pura de dataframe preguiçoso.O argumento
seedagora se comporta como esperado, com resultados repetíveis em várias chamadas e sessões.
DataFrame.fillnaeDataFrame.replaceagora suportam o ajuste deintefloatnas colunasDecimalseinclude_decimalestiver definido comoTrue.Foi adicionada documentação para as seguintes funções de procedimento armazenado e UDF em
files.pycomo resultado de sua disponibilidade geral.SnowflakeFile.writeSnowflakeFile.writelinesSnowflakeFile.writeable
Pequenas alterações na documentação para
SnowflakeFileeSnowflakeFile.open().
Correções de bugs¶
Corrigido um bug nas seguintes funções que geravam erros.
.cast()é aplicado à saída delas:from_jsonsize
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_timestampfalhasse 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.Grouperem operações GROUP BY. Quandofreqé especificado, os valores padrão dos argumentossort,closed,labeleconventionsão compatíveis;originé compatível quando éstartoustart_day.Foi adicionado suporte para consistência relaxada e garantias de ordenação em
pd.read_snowflakepara 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_CASEestiver definido e solicita ao usuário que o desfaça.Foi aprimorada a forma como um
index_labelausente emDataFrame.to_snowflakeeSeries.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,DataFrameouSeries.aggquando 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_CASEestiver definido e solicita ao usuário que o desfaça.Foi aprimorada a forma como um
index_labelausente emDataFrame.to_snowflakeeSeries.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.aggquando 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_filterai_aggsummarize_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_videoFoi 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_repositoryepackagespara 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-pythonao 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.describegerava 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_snowflakeeSeries.to_snowflakequando a tabela não existir.Melhoria da legibilidade do docstring para o parâmetro
if_existsempd.to_snowflake,DataFrame.to_snowflakeeSeries.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_axisem que umAttributeErrorestava sendo criado.Corrigido um bug em que
pd.get_dummiesnão ignorava os valores de NULL/NaN por padrão.Corrigido um bug em que chamadas repetidas para
pd.get_dummiesresultavam em ‘Erro de nome de coluna duplicado’.Corrigido um bug em
pd.get_dummiesem que a passagem da lista de colunas gerava rótulos de coluna incorretos na saída DataFrame.Atualização do
pd.get_dummiespara 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.pynormalrandn
Foi adicionado suporte ao parâmetro
allow_missing_columnsparaDataframe.union_by_nameeDataframe.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.distinctpara 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_summarizeobsoleta do Snowpark Python. Os usuários podem instalar osnowflake-ml-pythone usar a funçãosnowflake.cortex.summarizeem seu lugar.Função
snowflake_cortex_sentimentobsoleta do Snowpark Python. Os usuários podem instalar osnowflake-ml-pythone usar a funçãosnowflake.cortex.sentimentem 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_typeparaSession._write_modin_pandas_helperao 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.catalogem 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
SummarizeeSentimentdo Snowflake Cortex.Adição de suporte para valores de lista em
Series.str.get.
Correções de bugs¶
Corrigido um bug em
applyem 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
hourminute
Foi adicionado suporte para o parâmetro NULL_IF ao leitor CSV.
Foi adicionado suporte às opções
date_format,datetime_formatetimestamp_formatao carregar CSVs.
Correções de bugs¶
Foi corrigido um bug em
DataFrame.joinque fazia com que as colunas tivessem uma digitação incorreta.Corrigido um bug nas instruções
whenque 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_reversedivnullmap_catmap_contains_keymap_keysnullifzerosnowflake_cortex_sentimentacoshasinhatanhbit_lengthbitmap_bit_positionbitmap_bucket_numberbitmap_construct_aggcbrtequal_nullfrom_jsonifnulllocaltimestampmax_bymin_bynth_valuenvloctet_lengthpositionregr_avgxregr_avgyregr_countregr_interceptregr_r2regr_sloperegr_sxxregr_sxyregr_syytry_to_binarybase64base64_decode_stringbase64_encodeeditdistancehexhex_encodeinstrlog1plog2log10percentile_approxunbase64Adiçã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_viewpara 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_catemap_concat.Adição de uma opção
keep_column_orderpara manter a ordem original das colunas emDataFrame.with_columneDataFrame.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 parameteraArrayType.Adição de suporte para a criação de uma visualização temporária via
DataFrame.create_or_replace_temp_viewa partir de um DataFrame criado pela leitura de um arquivo de um estágio.Adição de suporte para o parâmetro
value_contains_nullaMapType.Adicionado interativo à telemetria que indica se o ambiente atual é interativo.
Permitir que
session.file.getem 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.catalogpara 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.mdpara 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_jsonque impedia queTimestampTypescomtzinfofosse analisado corretamente.Correção de um bug em
function date_formatque 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
replaceelitque gerava erro de asserção de dica de tipo ao passar objetos de expressão de coluna.Corrigido um bug em
pandas_udfepandas_udtfem 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.ljusteSeries.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_dicteDataFrame.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.uniqueAdição de suporte para
Series.dt.strftimecom 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=FalseemDataFrameGroupBy.apply.Adição de suporte para
expand=TrueemSeries.str.split.Adicionado suporte para
DataFrame.popeSeries.pop.Adição de suporte para
firstelastemDataFrameGroupBy.aggeSeriesGroupBy.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.varempd.pivot_table(),DataFrame.pivot_table()epd.crosstab().
Melhorias¶
Melhorou o desempenho dos métodos
DataFrame.map,Series.applyeSeries.mapmapeando 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.applymapeando 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.applyeDataFrame.mapse 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.