Notas de versão da Biblioteca Snowpark para Python para 2023¶
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.
Versão 1.11.1 (07/12/2023)¶
A versão 1.11.1 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado o atributo
conn_erroraSnowflakeSQLException, que armazena toda a exceção subjacente desnowflake-connector-python.Adicionado suporte para
RelationalGroupedDataframe.pivot()acessarpivotno seguinte padrãoDataframe.group_by(...).pivot(...).Adicionado o recurso experimental, Modo de teste local, que permite criar e operar em DataFrames do Snowpark Python localmente sem conectar-se a uma conta Snowflake. Você pode usar a estrutura de teste local para testar suas operações de DataFrame localmente, em sua máquina de desenvolvimento ou em um pipeline de CI (integração contínua), antes de implantar alterações de código em sua conta.
Adicionado suporte para novas funções
arrays_to_objectemsnowflake.snowpark.functions.Adicionado suporte para tipo de dados de vetor.
Atualizações de dependências¶
A dependência do cloudpickle foi incrementada para funcionar com
cloudpickle==2.2.1.snowflake-connector-pythonatualizado para a versão3.4.0.
Correções de bugs¶
A verificação das aspas no nome de colunas do DataFrame agora oferece suporte a caracteres de nova linha.
Corrigido um bug onde um DataFrame gerado por
session.read.with_metadatacriava uma tabela inconsistente ao executardf.write.save_as_table.
Versão 1.10.0 (03/11/2023)¶
A versão 1.10.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Suporte adicionado para gerenciar a diferenciação de letras maiúsculas e minúsculas em
DataFrame.to_local_iterator().Adicionado suporte para especificar nomes de colunas de entrada da UDTF vetorizada usando o parâmetro opcional
input_namesemUDTFRegistration.register,UDTFRegistration.register_fileefunctions.pandas_udtf. Por padrão,RelationalGroupedDataFrame.applyInPandasinferirá os nomes das colunas do esquema DataFrame atual.Adicionados atributos
sql_error_codeeraw_messageaSnowflakeSQLExceptionquando isso é causado por uma exceção SQL.
Correções de bugs¶
Corrigido um bug em
DataFrame.to_pandas()onde a conversão de Snowpark DataFrames em Pandas DataFrames perdia a precisão em números inteiros com mais de 19 dígitos.Corrigido um bug em
session.add_packagesonde ele não conseguia lidar com um especificador de requisitos que continha um nome de projeto com sublinhado e uma versão.Corrigido um bug em
DataFrame.limit()quandooffseté usado e o paiDataFrameusalimit. Agora ooffsetnão afetará olimitdo DataFrame pai.Corrigido um bug em
DataFrame.write.save_as_tableonde o DataFrames criado a partir do API de leitura não conseguia salvar dados no Snowflake devido a um nome de coluna inválido$1.
Mudanças de comportamento¶
Mudança de comportamento de
date_format:O argumento
formatmudou de opcional para obrigatório.O resultado retornado mudou de um objeto de data para uma cadeia de caracteres formatada para data.
Quando uma função de janela ou uma função geradora de dados dependente de sequência (
normal,zipf,uniform,seq1,seq2,seq4,seq8) é usada, a operação de classificação e filtro irá não será mais nivelada ao gerar a consulta.
Versão 1.9.0 (16/10/2023)¶
A versão 1.9.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado suporte para o ambiente de tempo de execução do Python 3.11.
Suporta objetos serializáveis
PythonObjJSONEncoderJSON para literaisARRAYeOBJECT.
Atualizações de dependências¶
Adicionada novamente a dependência de
typing-extensions.
Correções de bugs¶
Corrigido um bug em que as importações de locais de estágio permanente eram ignoradas para procedimentos armazenados temporários, UDTFs, UDFs e UDAFs.
Volte a usar a instrução CTAS (CREATE TABLE AS SELECT) para
DataFrameWriter.save_as_tableque não precisa de permissão de inserção para escrever tabelas.
Versão 1.8.0 (14/09/2023)¶
A versão 1.8.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado suporte para palavras-chave
VOLATILEeIMMUTABLEao registrar UDFs.Adicionado suporte para especificar chaves de clustering ao salvar dataframes usando
DataFrame.save_as_table.Aceita a entrada de objetos
Iterableparaschemaao criar dataframes usandoSession.create_dataframe.Adicionada a propriedade
DataFrame.sessionpara retornar um objetoSession.Adicionada a propriedade
Session.session_idpara retornar um número inteiro que representa a ID da sessão.Adicionada a propriedade
Session.connectionpara retornar um objetoSnowflakeConnection.Adicionado suporte para criar uma sessão do Snowpark a partir de um arquivo de configuração ou variáveis de ambiente.
Atualizações de dependências¶
snowflake-connector-pythonatualizado para 3.2.0.
Correções de bugs¶
Corrigido um bug em que um upload automático de pacote gerava
ValueErrormesmo quando versões de pacote compatíveis eram adicionadas emsession.add_packages.Corrigido um bug onde os procedimentos armazenados da tabela não eram registrados corretamente ao usar
register_from_file.Corrigido um bug em que as junções de dataframe falhavam com o erro
invalid_identifier.Corrigido um bug em que
DataFrame.copydesativava o simplificador de SQL para a cópia retornada.Corrigido um bug em que
session.sql().select()falharia se algum parâmetro fosse especificado parasession.sql().
Versão 1.7.0 (28/08/2023)¶
A versão 1.7.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Mudanças de comportamento¶
Ao criar procedimentos armazenados, UDFs, UDTFs e UDAFs com o parâmetro
is_permanent=False, objetos temporários são criados mesmo quandostage_nameé fornecido. O valor padrão deis_permanentéFalse, por isso, se esse valor não for explicitamente definido comoTruepara objetos permanentes, os usuários notarão uma mudança no comportamento.types.StructFieldagora coloca o identificador da coluna por padrão.
Novos recursos¶
Adicionados parâmetros
external_access_integrationsesecretsque podem ser usados ao criar uma UDF, UDTF ou procedimento armazenado do Snowpark Python para permitir a integração com acesso externo.Adicionado suporte para essas novas funções em
snowflake.snowpark.functions:array_flatteneflatten.Adição de suporte para
apply_in_pandasemsnowflake.snowpark.relational_grouped_dataframe.Adicionado suporte para replicar seu ambiente Python local no Snowflake via
Session.replicate_local_environment.
Correções de bugs¶
Corrigido um bug em que
session.create_dataframefalhava ao definir corretamente colunas anuláveis onde a nulidade era afetada pela ordem ou quando os dados eram fornecidos.Corrigido um bug em que
DataFrame.selectnão conseguia identificar colunas de alias ao usar funções de tabela quando as colunas de saída da função de tabela se sobrepunham às colunas em DataFrame.
Versão 1.6.1 (2023-08-02)¶
Mudanças de comportamento¶
DataFrameWriter.save_as_tableagora respeita o campo anulável do esquema fornecido pelo usuário ou o esquema inferido com base nos dados da entrada do usuário.
Novos recursos¶
Adicionado suporte para novas funções em
snowflake.snowpark.functions:array_sortsort_arrayarray_minarray_maxexplode_outer
Adicionado suporte para pacotes puros Python especificados via
Session.add_requirementsouSession.add_packages. Eles agora podem ser usados em procedimentos armazenados e UDFs mesmo se os pacotes não estiverem presentes no canal Snowflake Anaconda.Adicionados os parâmetros de sessão
custom_packages_upload_enabledecustom_packages_force_upload_enabledpara ativar o suporte ao recurso de pacotes puros Python mencionado acima. Ambos os parâmetros são padronizados comoFalse.Adicionado suporte para especificar requisitos de pacote passando um arquivo YAML de ambiente conda para
Session.add_requirements.Adicionado suporte para execução assíncrona de dataframes de múltiplas consultas que contêm variáveis de vinculação.
Adicionado suporte para renomear várias colunas em
DataFrame.rename.Adicionado suporte para tipos de dados de geometria.
Adicionado suporte para parâmetros em
session.sql()em procedimentos armazenados.Adicionado suporte para funções agregadas definidas pelo usuário (UDAFs). Este recurso está atualmente em versão preliminar privada.
Adicionado suporte para funções de tabela vetorizadas definidas pelo usuário (UDTFs vetorizadas). Este recurso está atualmente em versão preliminar pública.
Adicionado suporte para variantes de carimbo de data/hora do Snowflake (ou seja,
TIMESTAMP_NTZ,TIMESTAMP_LTZ,TIMESTAMP_TZ):Adicionado TimestampTimezone como um argumento no construtor
TimestampType.Adicionadas dicas de tipo:
NTZ,LTZ,TZe carimbo de data/hora para anotar funções ao registrar UDFs.
Melhorias¶
Removidas extensões de digitação de dependência redundantes.
DataFrame.cache_resultagora cria uma tabela temporária de nomes totalmente qualificados no banco de dados e esquema atuais.
Correções de bugs¶
Corrigido um bug onde a verificação de tipo acontecia em pandas antes de ser importada.
Corrigido um bug ao criar uma UDF de
numpy.ufunc.Corrigido um bug em que
DataFrame.unionnão gerava oSelectable.schema_querycorreto quando o simplificador SQL estava ativado.
Atualizações de dependências¶
snowflake-connector-pythonatualizado para a versão 3.0.4.
Versão 1.5.1 (20/06/2023)¶
Novos recursos e atualizações¶
Adicionado suporte para o ambiente de tempo de execução do Python 3.10.
Versão 1.5.0 (13/06/2023)¶
Mudanças de comportamento¶
Resultados de agregação, de funções como
DataFrame.aggeDataFrame.describe, não removem mais os caracteres não imprimíveis dos nomes das colunas.
Novos recursos e atualizações¶
Adicionado suporte para o ambiente de tempo de execução do Python 3.9.
Adicionado suporte para novas funções em
snowflake.snowpark.functions:array_generate_rangearray_unique_aggcollect_setsequenceAdicionado suporte para registrar e chamar procedimentos armazenados com o tipo de retorno
TABLE.Adicionado suporte para parâmetro comprimento em
StringType()para especificar o número máximo de caracteres que podem ser armazenados pela coluna.Adicionado o alias
functions.element_at()parafunctions.get().Adicionado o alias
Column.containsparafunctions.contains.Adicionado o recurso experimental
DataFrame.alias.Adicionado suporte para consultar colunas de metadados do estágio durante a criação de
DataFrameusandoDataFrameReader.Adicionado suporte para
StructType.addpara acrescentar mais campos a objetosStructTypeexistentes.Adicionado suporte para parâmetro
execute_asemStoredProcedureRegistration.register_from_file()para especificar os direitos do chamador do procedimento armazenado.
Correções de bugs¶
Corrigido um bug onde o
Dataframe.join_table_functionnão executou todas as consultas necessárias para configurar a função de tabela de junção quando o simplificador SQL foi ativado.Declaração de dica de tipo fixo para tipos personalizados:
ColumnOrName,ColumnOrLiteralStr,ColumnOrSqlExpr,LiteralTypeeColumnOrLiteralque estavam interrompendo as verificações demypy.Corrigido um bug onde
DataFrameWriter.save_as_tableeDataFrame.copy_into_tablefalhavam ao analisar nomes de tabelas totalmente qualificados.
Versão 1.4.0 (24/04/2023)¶
Novos recursos¶
Adição de suporte para
session.getOrCreate.Adicionado suporte para alias
Column.getField.Adicionado suporte para novas funções em
snowflake.snowpark.functions:date_addedate_subpara facilitar as operações de adição e subtração.ddaydiffdexplodedarray_distinctdregexp_extractdstructdformat_numberdbrounddsubstring_index
Adicionado o parâmetro
skip_upload_on_content_matchao criar UDFs, UDTFs e procedimentos armazenados usandoregister_from_filepara ignorar o carregamento de arquivos para um estágio se a mesma versão dos arquivos já estiver no estágio.Adicionado suporte para o método
DataFrame.save_as_tablepara receber nomes de tabelas que contêm pontos.O SQL gerado nivelado quando
DataFrame.filter()ouDataFrame.order_by()é seguido por uma instrução de projeção (por exemplo,DataFrame.select(),DataFrame.with_column()).Adição de suporte para criação de tabelas dinâmicas (em versão preliminar privada) usando
Dataframe.create_or_replace_dynamic_table.Adição de um argumento opcional,
params, emsession.sql()para oferecer suporte a variáveis de ligação. Observe que esse argumento ainda não é compatível com procedimentos armazenados.
Correções de bugs¶
Corrigido um bug em
strtok_to_arrayem que uma exceção era lançada quando um delimitador era passado.Corrigido um bug em
session.add_importem que o módulo tinha o mesmo namespace de outras dependências.
Versão 1.3.0 (28/03/2023)¶
Novos recursos¶
Suporte adicionado para o parâmetro delimitadores em
functions.initcap().Suporte adicionado para
functions.hash()para aceitar um número variável de expressões de entrada.Adição da API
Session.confpara obter, configurar ou verificar a mutabilidade de qualquer configuração de tempo de execução.Suporte adicionado para gerenciar a diferenciação de letras maiúsculas e minúsculas em
Rowresulta emDataFrame.collectusando o parâmetrocase_sensitive.Suporte ao indexador adicionado para
snowflake.snowpark.types.StructType.Adição de um argumento de palavra-chave
log_on_exceptionaDataframe.collecteDataframe.collect_no_waitpara opcionalmente desativar o registro de erros para exceções SQL.
Correções de bugs¶
Corrigido um bug em que uma operação de definição do DataFrame (
DataFrame.subtract,DataFrame.unionetc.) sendo chamada após outra operação de definição do DataFrame eDataFrame.selectouDataFrame.with_columnlança uma exceção.Corrigido um bug em que as instruções de classificação em cadeia são substituídas pelo simplificador SQL.
Melhorias¶
Consultas simplificadas JOIN para usar aliases constantes de subconsultas (
SNOWPARK_LEFT,SNOWPARK_RIGHT) por padrão. Os usuários podem desativar isto em tempo de execução comsession.conf.set('use_constant_subquery_alias', False)para usar alias gerados aleatoriamente.Permitido especificar parâmetros de instrução em
session.call().Habilitou o carregamento de grandes DataFrames pandas em procedimentos armazenados por padrão para um tamanho de 100.000 linhas.
Versão 1.2.0 (02/03/2023)¶
Novos recursos e atualizações¶
Suporte adicionado para exibição do código fonte como comentários nos scripts gerados ao registrar os procedimentos armazenados. Isto está habilitado por padrão, desabilite especificando
source_code_display=Falseno registro.Parâmetro
if_not_existsadicionado ao criar uma UDF, UDTF ou procedimento armazenado do Snowpark Python para ignorar a criação da função ou procedimento especificado se ele já existir.Aceitar inteiros ao chamar
snowflake.snowpark.functions.getpara extrair valor da matriz.Adicionado
functions.reverseem funções para abrir o acesso à função interna Snowflake REVERSE.Parâmetro
require_scoped_urladicionado emsnowflake.snowflake.files.SnowflakeFile.open()(em versão preliminar privada) para substituiris_owner_file, que está marcado para ser descontinuado.
Correções de bugs¶
Bug corrigido que substituía
paramstyleporqmarkao criar uma sessão do Snowpark.Bug corrigido quando
df.join(..., how="cross")falha comSnowparkJoinException: (1112): Unsupported using join type 'Cross'.Bug corrigido em que a consulta de uma coluna
DataFramecriada a partir de chamadas de função encadeadas utilizava um nome de coluna errado.
Versão 1.1.0 (26/01/2023)¶
Novos recursos e atualizações¶
asc,asc_nulls_first,asc_nulls_last,desc,desc_nulls_first,desc_nulls_last,date_parteunix_timestampadicionados em funções.Adicionada a propriedade
DataFrame.dtypespara retornar uma lista de pares de nomes de colunas e tipos de dados.Os seguintes aliases foram adicionados:
functions.expr() for functions.sql_expr().functions.date_format() for functions.to_date().functions.monotonically_increasing_id() for functions.seq8().functions.from_unixtime() for functions.to_timestamp().
Correções de bugs¶
Corrigido um bug no simplificador SQL que não lidava com o alias de coluna e fez uma boa junção em alguns casos. Consulte https://github.com/snowflakedb/snowpark-python/issues/658 para obter detalhes.
Corrigido um bug no simplificador SQL que gerava nomes de colunas errados para chamadas de funções, NaN e INF.
Melhorias¶
O parâmetro da sessão
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIERseráTrueapós o Snowflake 7.3 ser lançado. Em snowpark-python,session.sql_simplifier_enabledlê o valor dePYTHON_SNOWPARK_USE_SQL_SIMPLIFIERpor padrão, o que significa que o simplificador de SQL é habilitado por padrão após o lançamento do Snowflake 7.3. Para desativar isso, definaPYTHON_SNOWPARK_USE_SQL_SIMPLIFIERno Snowflake como False ou executesession.sql_simplifier_enabled = Falsea partir do Snowpark. Recomenda-se usar o simplificador SQL porque ele ajuda a gerar um SQL mais conciso.