Mudanças na API de Python do Snowpark¶
Este tópico fornece informações sobre versões de lançamento.
Neste tópico:
Versão 1.3.0 (28/03/2023)¶
A versão 1.3.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Suporte adicionado para o parâmetro
delimiters
emfunctions.initcap()
.Suporte adicionado para
functions.hash()
para aceitar um número variável de expressões de entrada.Adição da API
Session.conf
para 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
Row
resulta emDataFrame.collect
usando o parâmetrocase_sensitive
.Suporte ao indexador adicionado para
snowflake.snowpark.types.StructType
.Adição de um argumento de palavra-chave
log_on_exception
aDataframe.collect
eDataframe.collect_no_wait
para 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.union
etc.) sendo chamada após outra operação de definição do DataFrame eDataFrame.select
ouDataFrame.with_column
lanç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¶
A versão 1.2.0 da biblioteca do Snowpark introduz alguns novos recursos.
Novos recursos¶
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=False
no registro.Parâmetro
if_not_exists
adicionado 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.get
para extrair valor da matriz.Adicionado
functions.reverse
em funções para abrir o acesso à função interna Snowflake REVERSE.Parâmetro
require_scoped_url
adicionado 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
paramstyle
porqmark
ao 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
DataFrame
criada a partir de chamadas de função encadeadas utilizava um nome de coluna errado.
Versão 1.1.0¶
A versão 1.1.0 da biblioteca do Snowpark introduz alguns novos recursos.
Novos recursos¶
asc
,asc_nulls_first
,asc_nulls_last
,desc
,desc_nulls_first
,desc_nulls_last
,date_part
eunix_timestamp
adicionados em funções.Adicionada a propriedade
DataFrame.dtypes
para retornar uma lista de pares de nomes de colunas e tipos de dados.Os seguintes aliases foram adicionados:
functions.expr()
parafunctions.sql_expr()
.functions.date_format()
parafunctions.to_date()
.functions.monotonically_increasing_id()
parafunctions.seq8()
.functions.from_unixtime()
parafunctions.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
eINF
.
Melhorias¶
O parâmetro da sessão
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
seráTrue
após o Snowflake 7.3 ser lançado. Em snowpark-python,session.sql_simplifier_enabled
lê o valor dePYTHON_SNOWPARK_USE_SQL_SIMPLIFIER
por padrão, significando 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_SIMPLIFIER
no Snowflake comoFalse
ou executesession.sql_simplifier_enabled = False
a partir do Snowpark. Recomenda-se usar o simplificador SQL porque ele ajuda a gerar um SQL mais conciso.
Versão 1.0.0¶
A versão 1.0.0 da biblioteca do Snowpark introduz alguns novos recursos.
Versão 0.12.0¶
A versão 0.12.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Adicionados novos APIs para trabalho assíncrono:
Session.create_async_job()
para criar uma instânciaAsyncJob
a partir de uma ID de consulta.AsyncJob.result()
agora aceita o argumentoresult_type
para retornar os resultados em diferentes formatos.AsyncJob.to_df()
retorna umDataFrame
construído a partir do resultado deste trabalho assíncrono.AsyncJob.query()
retorna o texto SQL da consulta executada.
DataFrame.agg()
eRelationalGroupedDataFrame.agg()
agora aceitam argumentos de comprimento variável.Adicionados os parâmetros
lsuffix
ersuffix
aDataFrame.join()
eDataFrame.cross_join()
para renomear convenientemente as colunas sobrepostas.Adicionado
Table.drop_table()
para que você possa descartar a tabela de temporária depois de chamarDataFrame.cache_result()
.Table
é também um gerenciador de contexto, assim você pode usar a instruçãowith
para descartar a tabela temporária do cache após o uso.Session.use_secondary_roles()
adicionado.Funções adicionadas
first_value()
elast_value()
. (contribuição de @chasleslr)Adicionado
on
como um alias parausing_columns
ehow
como um alias parajoin_type
emDataFrame.join()
.
Correções de bugs¶
Corrigido um bug em
Session.create_dataframe()
que gerava um erro quando nomes deschema
tinham caracteres especiais.Corrigido um bug no qual as opções definidas em
Session.read.option()
não eram passadas paraDataFrame.copy_into_table()
como valores padrão.Corrigido um bug no qual
DataFrame.copy_into_table()
gerava um erro quando uma opção de cópia tinha aspas simples no valor.
Versão 0.11.0¶
A versão 0.11.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Mudanças de comportamento¶
Session.add_packages()
agora gera umValueError
quando a versão de um pacote não pode ser encontrada no canal Snowflake Anaconda. Anteriormente,Session.add_packages()
teve sucesso e uma exceçãoSnowparkSQLException
foi gerada mais tarde na etapa de registro de UDF ou do procedimento armazenado.
Novos recursos¶
Adicionado o método
FileOperation.get_stream()
para oferecer suporte ao download de arquivos de estágio como um fluxo.Adicionado suporte em
functions.ntiles()
para aceitar um argumentoint
.Os seguintes aliases foram adicionados:
functions.call_function()
parafunctions.call_builtin()
.functions.function()
parafunctions.builtin()
.DataFrame.order_by()
paraDataFrame.sort()
DataFrame.orderBy()
paraDataFrame.sort()
DataFrame.cache_result()
aprimorado para devolver uma classeTable
mais precisa em vez de uma classeDataFrame
.Adicionado suporte para permitir
session
como o primeiro argumento ao chamarStoredProcedure
.
Melhorias¶
Melhoria da geração de consultas aninhadas por meio do nivelamento de consultas, quando aplicável. Esta melhoria pode ser ativada com a configuração
Session.sql_simplifier_enabled = True
.DataFrame.select()
,DataFrame.with_column()
,DataFrame.drop()
e outros APIs relacionados a seleções têm SQL mais nivelado agora.DataFrame.union()
,DataFrame.union_all()
,DataFrame.except_()
,DataFrame.intersect()
,DataFrame.union_by_name()
nivelaram o SQL gerado quando vários operadores do conjunto forem encadeados.Anotações de tipo melhoradas para APIs de trabalho assimétrico.
Correções de bugs¶
Corrigido um bug no qual
Table.update()
,Table.delete()
,Table.merge()
tentava fazer referência a uma tabela temporária que não existia.
Versão 0.10.0¶
A versão 0.10.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Adicionados APIs experimentais para avaliar os dataframes do Snowpark com consultas assíncronas:
Adicionado o argumento da palavra-chave
block
às seguintes APIs de ação nos dataframes do Snowpark (que executam consultas) para permitir avaliações assíncronas:DataFrame.collect()
,DataFrame.to_local_iterator()
,DataFrame.to_pandas()
,DataFrame.to_pandas_batches()
,DataFrame.count()
,DataFrame.first()
,DataFrameWriter.save_as_table()
,DataFrameWriter.copy_into_location()
,Table.delete()
,Table.update()
,Table.merge()
.
Método adicionado
DataFrame.collect_nowait()
para permitir avaliações assíncronas.Adicionada a classe
AsyncJob
para recuperar resultados de consultas executadas de forma assíncrona e verificar seu status.
Adição de suporte para
table_type
emSession.write_pandas()
. Agora você pode escolher entre estas opções detable_type
:temporary
,temp
etransient
.Adicionado suporte ao uso de dados estruturados Python (
list
,tuple
edict
) como valores literais no Snowpark.Adicionado argumento da palavra-chave
execute_as
afunctions.sproc()
esession.sproc.register()
para permitir o registro de um procedimento armazenado como chamador ou proprietário.Adicionado suporte para especificar um formato de arquivo pré-configurado ao ler arquivos de um estágio no Snowflake.
Melhorias¶
Adicionado suporte para exibição de detalhes de uma sessão do Snowpark.
Correções de bugs¶
Foi corrigido um bug no qual
DataFrame.copy_into_table()
eDataFrameWriter.save_as_table()
criavam erroneamente uma nova tabela se o nome da tabela fosse totalmente qualificado, e a tabela já existisse.
Preterições¶
Argumento de palavra-chave obsoleto
create_temp_table
emSession.write_pandas()
.Invocação de UDFs usando argumentos em uma lista Python ou tupla obsoleta. Você pode usar argumentos de comprimento variável sem uma lista ou uma tupla.
Atualizações de dependências¶
snowflake-connector-python
atualizado para 2.7.12.
Versão 0.9.0¶
A versão 0.9.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Adicionado suporte para exibição do código fonte como comentários nos scripts gerados ao registrar UDFs. Este recurso é ativado por padrão. Para desativá-lo, passe o novo argumento da palavra-chave
source_code_display
comoFalse
ao chamarregister()
ou@udf()
.Adicionado suporte para chamar funções de tabela de
DataFrame.select()
,DataFrame.with_column()
eDataFrame.with_columns()
que agora assumem parâmetros do tipotable_function.TableFunctionCall
para colunas.Adicionado o argumento da palavra-chave
overwrite
aosession.write_pandas()
para permitir que você substitua o conteúdo de uma tabela do Snowflake por um de Pandas DataFrame.Adicionado o argumento da palavra-chave
column_order
aodf.write.save_as_table()
para especificar as regras de correspondência ao inserir dados em uma tabela no modo de anexo.Adicionado o método
FileOperation.put_stream()
para carregar arquivos locais em um estágio por meio de um fluxo de arquivos.Adicionados os métodos
TableFunctionCall.alias()
eTableFunctionCall.as_()
para permitir o aliasing dos nomes das colunas que vêm da saída das junções de funções de tabela.Função adicionada
get_active_session()
no módulosnowflake.snowpark.context
para obter a atual sessão ativa do Snowpark.
Melhorias¶
Melhorada a função
function.uniform()
para inferir os tipos de entradasmax_
emin_
e converter os limites emIntegerType
ouFloatType
, respectivamente.
Correções de bugs¶
Corrigido um bug no qual a inserção de lote não deveria gerar um erro quando
statement_params
não é passado para a função.Corrigido um bug no qual os nomes das colunas devem ficar entre aspas quando
session.create_dataframe()
é chamado com dicts e um determinado esquema.Corrigido um bug no qual a criação de uma tabela deve ser pulada se a tabela já existir e estiver em modo de anexo ao chamar
df.write.save_as_table()
.Corrigido um bug no qual pacotes de terceiros com sublinhados não podem ser adicionados ao registrar UDFs.
Versão 0.8.0¶
A versão 0.8.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Adicionado argumento somente palavra-chave
statement_params
aos seguintes métodos para permitir a especificação de parâmetros de nível de instrução:collect
,to_local_iterator
,to_pandas
,to_pandas_batches
,count
,copy_into_table
,show
,create_or_replace_view
,create_or_replace_temp_view
,first
,cache_result
erandom_split
na classesnowflake.snowpark.Dateframe
.update
,delete
emerge
na classesnowflake.snowpark.Table
.save_as_table
ecopy_into_location
na classesnowflake.snowpark.DataFrameWriter
.approx_quantile
,statement_params
,cov
ecrosstab
na classesnowflake.snowpark.DataFrameStatFunctions
.register
eregister_from_file
na classesnowflake.snowpark.udf.UDFRegistration
.register
eregister_from_file
na classesnowflake.snowpark.udtf.UDTFRegistration
.register
eregister_from_file
na classesnowflake.snowpark.stored_procedure.StoredProcedureRegistration
.udf
,udtf
esproc
emsnowflake.snowpark.functions
.
Adicionado suporte para
Column
como um argumento de entrada parasession.call()
.Adição de suporte para
table_type
emdf.write.save_as_table()
. Agora você pode escolher entre estas opções detable_type
:temporary
,temp
etransient
.
Melhorias¶
Adicionada validação do nome do objeto nos métodos
session.use_*
.Atualizada a tag de consulta em SQL para escapar dela quando ela contém caracteres especiais.
Adicionada uma verificação para ver se os termos do Anaconda são confirmados ao adicionar pacotes em falta.
Correções de bugs¶
Corrigido o comprimento limitado da coluna da cadeia de caracteres em
session.create_dataframe()
.Corrigido um erro no qual
session.create_dataframe()
convertia erroneamente 0 eFalse
emNone
quando os dados de entrada eram apenas uma lista.Corrigido um bug no qual a chamada
session.create_dataframe()
utilizando um grande conjunto de dados local às vezes criava uma tabela temporária duas vezes.Alinhada a definição de
function.trim()
com a definição da função SQL.Corrigido um problema onde o snowpark-python ficava suspenso ao usar o
sum
(função interna) definido pelo sistema Python vs.function.sum()
do Snowpark.
Versão 0.7.0¶
A versão 0.7.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Suporte adicionado para funções de tabela definidas pelo usuário (UDTFs).
Use a função
snowflake.snowpark.functions.udtf()
para registrar uma UDTF, ou use-a como decorador para registrar a UDTF.Você também pode usar
Session.udtf.register()
para registrar uma UDTF.Use
Session.udtf.register_from_file()
para registrar uma UDTF de um arquivo Python.
APIs atualizadas para consultar uma função de tabela, incluindo tanto funções de tabela incluídas com o Snowflake e UDTFs.
Use a função
snowflake.snowpark.functions.table_function()
para criar um objeto que pode ser chamado representando uma função de tabela e use-o para chamar a função de tabela em uma consulta.Alternativamente, use a função
snowflake.snowpark.functions.call_table_function()
para chamar uma função de tabela.Suporte adicionado para a cláusula
over
, que especificapartition by
eorder by
ao unir lateralmente uma função de tabela.Session.table_function()
eDataFrame.join_table_function()
atualizados para aceitar instânciasTableFunctionCall
.
Alterações interruptivas¶
Ao criar uma função com
functions.udf()
efunctions.sproc()
, agora você pode especificar uma lista vazia para o argumentoimports
oupackages
para indicar que nenhuma importação ou pacote é usado para essa UDF ou procedimento armazenado. Anteriormente, a especificação de uma lista vazia significava que a função utilizaria importações ou pacotes em nível de sessão.Implementação melhorada do
__repr__
de tipos de dados emtypes.py
. A propriedade não utilizadatype_name
foi removida.Classe de exceção específica do Snowpark adicionada para erros de SQL. Isso substitui o anterior
ProgrammingError
do conector de Python.
Melhorias¶
Bloqueio adicionado a uma UDF ou UDTF quando ela é chamado pela primeira vez por thread.
Mensagem de erro melhorada para erros de pickling que ocorreram durante a criação da UDF.
Consulta de ID incluída ao registrar a consulta falhada.
Correções de bugs¶
Corrigido um bug no qual dados não integrais (como carimbos de data/hora) eram ocasionalmente convertidos a integers ao chamar
DataFrame.to_pandas()
.Corrigido um bug no qual
DataFrameReader.parquet()
não conseguia ler um arquivo de parquet quando sua coluna continha espaços.Corrigido um bug no qual
DataFrame.copy_into_table()
falhava quando o dataframe era criado lendo um arquivo com esquemas inferidos.
Preterições¶
Session.flatten()
eDataFrame.flatten()
.
Atualizações de dependências¶
Versão do
cloudpickle
<=2.0.0
restringida.
Versão 0.6.0¶
A versão 0.6.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Suporte adicionado para as UDFs vetorizadas via API de lote de UDF de Python. A API de lote de UDF de Python permite definir funções de Python que recebem lotes de linhas de entrada como DataFrames do Pandas e retornam lotes de resultados como Arrays ou Series do Pandas. Isso pode melhorar o desempenho de UDFs no Snowpark.
Suporte adicionado para inferir o esquema de um DataFrame por padrão quando ele é criado lendo um arquivo Parquet, Avro ou ORC no estágio.
Funções
current_session()
,current_statement()
,current_user()
,current_version()
,current_warehouse()
,date_from_parts()
,date_trunc()
,dayname()
,dayofmonth()
,dayofweek()
,dayofyear()
,grouping()
,grouping_id()
,hour()
,last_day()
,minute()
,next_day()
,previous_day()
,second()
,month()
,monthname()
,quarter()
,year()
,current_database()
,current_role()
,current_schema()
,current_schemas()
,current_region()
,current_avaliable_roles()
,add_months()
,any_value()
,bitnot()
,bitshiftleft()
,bitshiftright()
,convert_timezone()
,uniform()
,strtok_to_array()
,sysdate()
,time_from_parts()
,timestamp_from_parts()
,timestamp_ltz_from_parts()
,timestamp_ntz_from_parts()
,timestamp_tz_from_parts()
,weekofyear()
,percentile_cont()
adicionadas asnowflake.snowflake.functions
.
Melhorias¶
Suporte adicionado para a criação de um
DataFrame
vazio com um esquema específico usando o métodoSession.create_dataframe()
.Nível de registro em log alterado de
INFO
paraDEBUG
para vários registros (por exemplo, a consulta executada) ao avaliar um dataframe.Mensagem de erro melhorada quando uma UDF não é criada devido a erros de pickling.
Removidas as seguintes APIs que foram preteridas em 0.4.0:
DataFrame.groupByGroupingSets()
,DataFrame.naturalJoin()
,DataFrame.joinTableFunction
,DataFrame.withColumns()
,Session.getImports()
,Session.addImport()
,Session.removeImport()
,Session.clearImports()
,Session.getSessionStage()
,Session.getDefaultDatabase()
,Session.getDefaultSchema()
,Session.getCurrentDatabase()
,Session.getCurrentSchema()
,Session.getFullyQualifiedCurrentSchema()
.typing-extension
adicionada como uma nova dependência com a versão >=4.1.0
.
Correções de bugs¶
Dependências rígidas do Pandas removidas no método
Session.create_dataframe()
.
Versão 0.5.0¶
A versão 0.5.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Adicionada API de procedimentos armazenados.
Propriedade
Session.sproc
esproc()
adicionada asnowflake.snowpark.functions
, de forma que você pode registrar procedimentos armazenados.Session.call
adicionado para chamar procedimentos armazenados pelo nome.UDFRegistration.register_from_file()
adicionado para permitir o registro de UDFs diretamente de arquivos fonte de Python ou arquivos zip.UDFRegistration.describe()
adicionado para descrever uma UDF.DataFrame.random_split()
adicionado para fornecer uma forma de dividir aleatoriamente um dataframe.Funções
md5()
,sha1()
,sha2()
,ascii()
,initcap()
,length()
,lower()
,lpad()
,ltrim()
,rpad()
,rtrim()
,repeat()
,soundex()
,regexp_count()
,replace()
,charindex()
,collate()
,collation()
,insert()
,left()
,right()
,endswith()
adicionadas asnowflake.snowpark.functions
.A função
call_udf()
agora também aceita valores literais.Palavra-chave
distinct
fornecida emarray_agg()
.
Correções de bugs¶
Correção de um problema que fazia com que
DataFrame.to_pandas()
tivesse uma coluna de cadeia de caracteres seColumn.cast(IntegerType())
fosse usado.Correção de um bug em
DataFrame.describe()
quando há mais de uma coluna de cadeia de caracteres.
Versão 0.4.0¶
A versão 0.4.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Agora você pode especificar quais pacotes do Anaconda usar ao definir UDFs.
add_packages()
,get_packages()
,clear_packages()
eremove_package()
adicionados à classeSession
.add_requirements()
adicionado aSession
para que você possa usar um arquivo de requisitos para especificar quais pacotes essa sessão irá usar.Parâmetro
packages
adicionado à funçãosnowflake.snowpark.functions.udf()
e ao métodoUserDefinedFunction.register()
para indicar dependências no nível da UDF no pacote do Anaconda ao criar uma UDF.Parâmetro
imports
adicionado asnowflake.snowpark.functions.udf()
eUserDefinedFunction.register()
para especificar importações de código no nível da UDF.Parâmetro
session
adicionado à funçãoudf()
eUserDefinedFunction.register()
para que você possa especificar qual sessão usar para criar uma UDF se você tiver várias sessões.Tipos
Geography
eVariant
adicionados asnowflake.snowpark.types
para serem usados como dicas de tipo para dados de Geografia e Variantes ao definir uma UDF.Suporte adicionado para dados de Geografia geoJSON.
Adição de
Table
, uma subclasse doDataFrame
para operações de tabela.Métodos
update
edelete
atualizam e excluem linhas de uma tabela no Snowflake.O método
merge
funde dados de umDataFrame
a umaTable
.Método
DataFrame.sample()
substituído com um parâmetro adicionalseed
que funciona em tabelas, mas não em exibições e subconsultas.DataFrame.to_local_iterator()
eDataFrame.to_pandas_batches()
adicionados para permitir obter resultados de um iterador quando o conjunto de resultados retornado do banco de dados do Snowflake for muito grande.DataFrame.cache_result()
adicionado para caching das operações realizadas em umDataFrame
em uma tabela temporária. As operações subsequentes noDataFrame
original não têm efeito sobre o resultado noDataFrame
de resultado em cache.Propriedade
DataFrame.queries
adicionada para obter consultas SQL que serão executadas para avaliar oDataFrame
.Session.query_history()
adicionado como gestor de contexto para monitorar consultas SQL executadas em uma sessão, incluindo todas as consultas SQL para avaliarDataFrames
criados de uma sessão. Tanto a ID de consulta como o texto da consulta são registrados.Agora você pode criar uma instância de
Session
a partir de uma instância desnowflake.connector.SnowflakeConnection
já estabelecida. Use o parâmetroconnection
emSession.builder.configs()
.use_database()
,use_schema()
,use_warehouse()
, euse_role()
adicionados à classeSession
para trocar o banco de dados/esquema/warehouse/função após uma sessão ser criada.DataFrameWriter.copy_into_table()
adicionado para descarregar umDataFrame
para arquivos em estágio.DataFrame.unpivot()
adicionado.Column.within_group()
adicionado para ordenar as linhas por colunas com algumas funções de agregação.Funções
listagg()
,mode()
,div0()
,acos()
,asin()
,atan()
,atan2()
,cos()
,cosh()
,sin()
,sinh()
,tan()
,tanh()
,degrees()
,radians()
,round()
,trunc()
, efactorial()
adicionadas asnowflake.snowpark.functions
.Argumento opcional
ignore_nulls
adicionado na funçãolead()
elag()
.O parâmetro
condition
da funçãowhen()
eiff()
agora aceita expressões SQL.
Melhorias¶
Todos os nomes de funções e métodos foram renomeados para usar a nomenclatura snake case, que é mais comum em Python. Por conveniência, alguns nomes em camel case são mantidos como alias para APIs em snake case. Recomenda-se usar as APIs em snake case.
Esses métodos foram preteridos na classe
Session
e substituídos por seus equivalentes em snake case:getImports()
,addImports()
,removeImport()
,clearImports()
,getSessionStage()
,getDefaultSchema()
,getDefaultSchema()
,getCurrentDatabase()
egetFullyQualifiedCurrentSchema()
.Esses métodos foram preteridos na classe
DataFrame
e substituídos por seus equivalentes em snake case:groupingByGroupingSets()
,naturalJoin()
,withColumns()
ejoinTableFunction()
.A propriedade
DataFrame.columns
agora é consistente comDataFrame.schema.names
e com os requisitos de identificadores de bancos de dados do Snowflake.Column.__bool__()
agora gera umTypeError
. Isso proibirá o uso de operadores lógicosand
,or
,not
no objetoColumn
. Por exemplo,col("a") > 1 and col("b") > 2
irá gerar umTypeError
. Use(col("a") > 1) & (col("b") > 2)
em vez disso.PutResult
eGetResult
alterados para a subclasseNamedTuple
.Correção de um bug quando o caminho local ou o local do estágio tem um espaço ou outros caracteres especiais.
DataFrame.describe()
alterados para que colunas que não sejam numéricas e não sejam cadeias de caracteres sejam ignoradas em vez de gerar uma exceção.
Atualizações de dependências¶
snowflake-connector-python
atualizado para 2.7.4.
Versão 0.3.0¶
A versão 0.3.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
Column.isin()
adicionado com um aliasColumn.in_()
.Adição de
Column.try_cast()
, que é uma versão especial decast()
. Ele tenta converter uma expressão de cadeia de caracteres para outros tipos e retornanull
se a conversão não for possível.Column.startswith()
eColumn.substr()
adicionados para processar colunas de cadeias de caracteres.Column.cast()
agora também aceita um valorstr
para indicar o tipo de conversão, além de uma instânciaDataType
.DataFrame.describe()
adicionado para resumir as estatísticas de umDataFrame
.DataFrame.explain()
adicionado para imprimir o plano de consulta de umDataFrame
.DataFrame.filter()
eDataFrame.select_expr()
agora aceitam uma expressão SQL.Adição de um novo parâmetro
bool
chamadocreate_temp_table
aos métodosDataFrame.saveAsTable()
eSession.write_pandas()
para criar opcionalmente uma tabela temporária.DataFrame.minus()
eDataFrame.subtract()
adicionados como alias paraDataFrame.except_()
.regexp_replace()
,concat()
,concat_ws()
,to_char()
,current_timestamp()
,current_date()
,current_time()
,months_between()
,cast()
,try_cast()
,greatest()
,least()
ehash()
adicionados ao módulosnowflake.snowpark.functions
.
Correções de bugs¶
Correção de um problema no qual
Session.createDataFrame(pandas_df)
eSession.write_pandas(pandas_df)
geravam uma exceção quando DataFrame do Pandas tinham espaços no nome da coluna.Correção de um problema no qual
DataFrame.copy_into_table()
às vezes imprimia erroneamente uma entrada de registro no nível de um erro.Correção de um problema de documentação de API no qual algumas APIs de DataFrame estavam faltando na documentação.
Atualizações de dependências¶
snowflake-connector-python
atualizado para 2.7.2, o que atualiza a dependênciapyarrow
para 6.0.x. Consulte as notas de lançamento do Python connector 2.7.2 para obter mais informações.
Versão 0.2.0¶
A versão 0.2.0 da biblioteca do Snowpark introduz alguns novos recursos e melhorias.
Novos recursos¶
O método
createDataFrame()
foi adicionado para criar um DataFrame a partir de um DataFrame do Pandas.O método
write_pandas()
foi adicionado para escrever um DataFrame do Pandas em uma tabela no Snowflake e obter um objeto DataFrame do Snowpark de volta.Novas classes e métodos adicionados para chamar funções de janela.
Adição das novas funções
cume_dist()
para encontrar a distribuição cumulativa de um valor em relação a outros valores dentro de uma partição de janela, erow_number()
, que retorna um número de linha único para cada linha dentro de uma partição de janela.Adição de funções para computar estatísticas para DataFrames na classe
DataFrameStatFunctions
.Adição de funções para lidar com valores em falta em um DataFrame na classe
DataFrameNaFunctions
.Adição de novos métodos:
rollup()
,cube()
epivot()
à classe DataFrame.Adição da classe
GroupingSets
, que você pode usar com o método DataFramegroupByGroupingSets
para executar umSQL GROUP BY GROUPING SETS
.Adição da nova classe
FileOperation(session)
, que você pode usar para carregar e baixar arquivos de e para um estágio.Adição do método
copy_into_table()
para carregar dados de arquivos em um estágio para uma tabela.Em expressões CASE, as funções
when
eotherwise
agora aceitam tipos de Python além de objetosColumn
.Quando você registrar uma UDF, agora você pode opcionalmente definir o parâmetro
replace
comoTrue
para substituir uma UDF existente com o mesmo nome.
Melhorias¶
UDFs são agora compactadas antes de serem carregadas no servidor. Isso as torna cerca de 10 vezes menores, o que pode ajudar quando você estiver usando grandes arquivos de modelos de ML.
Quando o tamanho de uma UDF for menor que 8196 bytes, ela será carregada como código inline em vez de ser carregada para um estágio.
Correções de bugs¶
Correção de um problema no qual a instrução
df.select(when(col("a") == 1, 4).otherwise(col("a"))), [Row(4), Row(2), Row(3)]
gerava uma exceção.Correção um problema no qual
df.toPandas()
gerava uma exceção quando um DataFrame era criado a partir de grandes quantidades de dados locais.