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 em functions.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ção Session.write_arrow().

  • O criador de perfil DataFrame adiciona as seguintes informações sobre cada consulta: describe query time, execution time e sql query text. Para visualizar estas informações, chame session.dataframe_profiler.enable() e chame get_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 a Session.call(). Quando block=False, retorna um AsyncJob em vez de bloquear até a conclusão.

    • Adição do parâmetro block: bool = True a StoredProcedure.__call__() para suporte assíncrono em procedimentos armazenados nomeados e anônimos.

    • Adição de Session.call_nowait() que é equivalente a Session.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 usando session.create_dataframe() usando muitos dados de entrada.

  • Correção de um bug em DataFrameReader.parquet em que a opção ignore_case no infer_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 como JSON e ARROW.

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 do modin deve ser pelo menos 0.35.0 e ray 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 e pd.to_timedelta gerariam IndexError inesperadamente.

  • Correção de um bug em que pd.explain_switch geraria IndexError ou retornaria None 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 para Session.write_pandas ou Session.write_arrow ao criar um DataFrame de um pandas DataFrame ou uma tabela pyarrow.

  • Adição de novas APIs para AsyncJob:

    • AsyncJob.is_failed() retorna um booliano indicando se um trabalho falhou. Pode ser usado em combinação com AsyncJob.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 chamar result().

  • 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 usando pd.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 em DataFrameReader.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 em dbapi 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 que custom_schema aceita um esquema ilegal.

  • Correção de um bug em DataFrameReader.dbapi (versão preliminar privada), em que custom_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 a DataFrameReader. Quando TRY_CAST é True, as colunas são delimitadas em uma instrução TRY_CAST em vez de uma conversão física ao carregar dados.

  • Adição de uma nova opção USE_RELAXED_TYPES ao INFER_SCHEMA_OPTIONS DataFrameReader. Quando definida como True, esta opção converte todas as cadeias de caracteres em cadeias de caracteres de comprimento máximo e todos os tipos numéricos em DoubleType.

  • 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 a DataFrameReader.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ção rowTag.

  • 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 usando session.ast_enabled = True.

  • Definir enforce_ordering=True ao chamar to_snowpark_pandas():code: de um Snowpark DataFrame contendo consultas DML/DDL em vez de lançar um NotImplementedError.

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 objetos Column.

  • 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 e Series.to_excel.

  • Adição de suporte para pd.read_feather, pd.read_orc e pd.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 e pd.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 ou pandas 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 e ipywidgets 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 como np.where em objetos modin com o backend do Pandas geraria um AttributeError. Esta correção requer o modin 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 de PATTERN ao ler arquivos com INFER_SCHEMA habilitado.

  • Adição de suporte para as seguintes funções baseadas em AI no functions.py:

    • ai_complete

    • ai_similarity

    • ai_summarize_agg (originalmente summarize_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 em Session.call, que pode ser usado para definir o tipo de retorno das funções para um objeto DataFrame.

  • Adição de um novo argumento a Dataframe.describe chamado strings_include_math_stats que aciona stddev e mean a serem calculados para colunas da cadeia de caracteres.

  • Adição de suporte para recuperar Edge.properties ao recuperar a linhagem de DGQL em DataFrame.lineage.trace.

  • Adição de um parâmetro table_exists a DataFrameWriter.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 que create_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 tipo TIMESTAMP do Databricks foi convertido no tipo TIMESTAMP_NTZ do Snowflake que deve ser o tipo TIMESTAMP_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 e SELECT * 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() e Session.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 em df.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 usar MATCH_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 como False para DataFrame.to_view, Series.to_view, DataFrame.to_dynamic_table e Series.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 e groupby, 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âmetro other é um Series 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 dados FILE.

  • 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 e FAILFAST 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 use SELECT * EXCLUDE () para excluir as colunas descartadas. Para ativar esse recurso, defina session.conf.set("use_simplified_query_generation", True).

  • Adição de suporte para VariantType a StructType.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 e Series.str.__getitem__ (Series.str[...]).

  • Adição de suporte para DataFrame.to_html.

  • Adicionado suporte para DataFrame.to_string e Series.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 para DataFrame.to_iceberg e Series.to_iceberg.

Versão 1.31.0 (2025-04-24)

Novos recursos

  • Foi adicionado suporte para a permissão restricted caller do argumento execute_as em StoredProcedure.register():code:.

  • Foi adicionado suporte a instruções não selecionadas em DataFrame.to_pandas().

  • Foi adicionado suporte ao parâmetro artifact_repository a Session.add_packages, Session.add_requirements, Session.get_packages, Session.remove_package e Session.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, como col(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ção prompt() e arquivos de imagem, e alterado o nome do segundo argumento de expr para file)

    • ai_classify

Melhorias

  • Você renomeou o parâmetro relaxed_ordering para enforce_ordering para DataFrame.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âmetro fetch_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 um TypeError era acionado quando create_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 em DataFrameAnalyticsFunctions.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 e snowpark.snowflake.functions.get gerassem IndexError em vez de retornar null.

  • 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 e Series.create_or_replace_view.

  • Adicionado suporte para DataFrame.create_or_replace_dynamic_table e Series.create_or_replace_dynamic_table.

  • Adicionado suporte para DataFrame.to_view e Series.to_view.

  • Adicionado suporte para DataFrame.to_dynamic_table e Series.to_dynamic_table.

  • Foi adicionado suporte para DataFrame.groupby.resample para as agregações max, mean, median, min e sum.

  • 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 e Series.to_iceberg.

  • Foi adicionado suporte a valores dict em Series.str.len.

Melhorias

  • Melhoria do desempenho de DataFrame.groupby.apply e Series.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 em enforce_ordering para pd.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 e enforce_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âmetro relaxed_ordering.

  • DataFrameReader.dbapi (versão preliminar) agora aceita uma lista de cadeias de caracteres para o parâmetro session_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ário fractions em comparação com o método antigo de criar uma subconsulta UNION ALL para cada chave em fractions. Para ativar esse recurso, defina session.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ção session.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 e DataFrame.replace agora suportam o ajuste de int e float nas colunas Decimal se include_decimal estiver definido como True.

  • 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 e SnowflakeFile.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. Quando freq é especificado, os valores padrão dos argumentos sort, closed, label e convention são compatíveis; origin é compatível quando é start ou start_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âmetro relaxed_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 em DataFrame.to_snowflake e Series.to_snowflake é tratado quando index=True. Em vez de criar um ValueError, os rótulos definidos pelo sistema são usados para as colunas de índice.

  • Foi aprimorada a mensagem de erro para groupby, DataFrame ou Series.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 em DataFrame.to_snowflake e Series.to_snowflake é tratado quando index=True. Em vez de criar um ValueError, 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 e packages 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 o session.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 e Series.to_snowflake quando a tabela não existir.

  • Melhoria da legibilidade do docstring para o parâmetro if_exists em pd.to_snowflake, DataFrame.to_snowflake e Series.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 um AttributeError 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 para Dataframe.union_by_name e Dataframe.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, defina session.conf.set("use_simplified_query_generation", False).

Preterições

  • Função snowflake_cortex_summarize obsoleta do Snowpark Python. Os usuários podem instalar o snowflake-ml-python e usar a função snowflake.cortex.summarize em seu lugar.

  • Função snowflake_cortex_sentiment obsoleta do Snowpark Python. Os usuários podem instalar o snowflake-ml-python e usar a função snowflake.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âmetro use_logical_type para Session._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 e Sentiment 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 e timestamp_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áusula otherwise.

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 e map_concat.

  • Adição de uma opção keep_column_order para manter a ordem original das colunas em DataFrame.with_column e DataFrame.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 a ArrayType.

  • 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 a MapType.

  • 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 atual

  • Adiçã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 via Session.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 o cosign.

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 que TimestampTypes com tzinfo 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 e lit que gerava erro de asserção de dica de tipo ao passar objetos de expressão de coluna.

  • Corrigido um bug em pandas_udf e pandas_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 e Series.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 e DataFrame.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 em DataFrameGroupBy.apply.

  • Adição de suporte para expand=True em Series.str.split.

  • Adicionado suporte para DataFrame.pop e Series.pop.

  • Adição de suporte para first e last em DataFrameGroupBy.agg e SeriesGroupBy.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" e np.var em pd.pivot_table(), DataFrame.pivot_table() e pd.crosstab().

Melhorias

  • Melhorou o desempenho dos métodos DataFrame.map, Series.apply e Series.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 e DataFrame.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.