Notas de versão da Biblioteca Snowpark para Python para 2024¶
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.23.0 (9 de outubro de 2024)¶
Novos recursos¶
Adição das seguintes novas funções em
snowflake.snowpark.functions
:make_interval
Adição de suporte ao uso de constantes de intervalo Snowflake com
Window.range_between()
quando a ordem por coluna for do tipo TIMESTAMP ou DATE.Adição de suporte para gravações de arquivo. Este recurso está atualmente em versão preliminar privada.
Adição de
thread_id
paraQueryRecord
rastrear o ID do thread que envia o histórico de consulta.Adição de suporte para
Session.stored_procedure_profiler
.
Correções de bugs¶
Correção de um bug onde o registro de um procedimento armazenado ou UDxF com dicas de tipo geraria um aviso
NoneType
semlen()
ao tentar ler valores padrão da função.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte para o método
TimedeltaIndex.mean
.Adição de suporte para alguns casos de agregação de colunas
Timedelta
emaxis=0
comagg
ouaggregate
.Adição de suporte para
by
,left_by
,right_by
,left_index
eright_index
parapd.merge_asof
.Adição de suporte para passagem do parâmetro
include_describe
paraSession.query_history
.Adição de suporte aos métodos
DatetimeIndex.mean
eDatetimeIndex.std
.Adição de suporte para
Resampler.asfreq
,Resampler.indices
,Resampler.nunique
eResampler.quantile
.Adição de suporte para as frequência de
resample
W
,ME
eYE
comclosed = "left"
.Adição de suporte para
DataFrame.rolling.corr
eSeries.rolling.corr
parapairwise = False
ewindow
do tipo inteiro.Adição de suporte para as cadeias de caracteres baseadas em tempo
window
emin_periods = None
paraRolling
.Adicionado suporte para
DataFrameGroupBy.fillna
eSeriesGroupBy.fillna
.Adição de suporte para construir de objetos
Series
eDataFrame
com o objetoIndex
ocioso como os argumentosdata
,index
ecolumns
.Adição de suporte para construir os objetos
Series
eDataFrame
com os valoresindex
ecolumn
não presentes emDataFrame
/Series
data
.Adição de suporte para
pd.read_sas
(Usa o pandas nativo para processamento).Adição de suporte para aplicação de
rolling().count()
eexpanding().count()
para as séries e colunasTimedelta
.Adição de suporte para
tz
empd.date_range
epd.bdate_range
.Adição de suporte para
Series.items
.Adição de suporte para
errors="ignore"
empd.to_datetime
.Adicionado suporte para
DataFrame.tz_localize
eSeries.tz_localize
.Adicionado suporte para
DataFrame.tz_convert
eSeries.tz_convert
.Adição de suporte para aplicação de funções Python do Snowpark (por exemplo,
sin
) emSeries.map
,Series.apply
,DataFrame.apply
eDataFrame.applymap
.
Melhorias¶
Melhoria de
to_pandas
para preservar o deslocamento do fuso horário original para o tipo TIMESTAMP_TZ.Resultados de
dtype
aprimorados para o tipo TIMESTAMP_TZ exibir o deslocamento correto do fuso horário.Resultados de
dtype
aprimorados para o tipo TIMESTAMP_LTZ exibir o fuso horário correto.Mensagem de erro aprimorada ao passar valor não booliano para
numeric_only
em agregações com group by.Aviso desnecessário removido sobre algoritmo de classificação em
sort_values
.Use o objeto SCOPED para criar tabelas temporárias internas. Os objetos SCOPED serão armazenados no escopo do sproc se forem criados dentro do sproc armazenado; caso contrário, serão armazenados no escopo da sessão e o objeto será limpo automaticamente no final do escopo.
Mensagens de aviso aprimoradas para operações que levam à materialização com lentidão inadvertida.
Remoção da mensagem de aviso desnecessária sobre
convert_dtype
emSeries.apply
.
Correções de bugs¶
Correção de um bug em que um objeto
Index
criado a partir de umSeries
/DataFrame
atualizava incorretamente o nome do índice doSeries
/DataFrame
após uma atualização local ter sido aplicada aoSeries
/DataFrame
original.Correção de um
SettingWithCopyWarning
que às vezes aparecia ao imprimir colunasTimedelta
.Correção do argumento
inplace
para objetosSeries
derivados de outros objetosSeries
.Correção de um bug no qual
Series.sort_values
falhava se o nome da série se sobrepusesse ao nome da coluna do índice.Correção de um bug em que a transposição de um dataframe mapeava níveis de índice
Timedelta
para níveis de coluna de inteiros.Correção de um bug em que métodos
Resampler
em colunas timedelta produziam resultados inteiros.Correção de um bug em que
pd.to_numeric()
deixava as entradasTimedelta
comoTimedelta
em vez de convertê-las em números inteiros.Correção de
loc
definido ao configurar uma única linha, ou várias linhas, de um DataFrame com um valor de série.
Versão 1.22.1 (11 de setembro de 2024)¶
Este é um relançamento da versão 1.22.0. Consulte as notas de lançamento 1.22.0 para obter o conteúdo detalhado do lançamento .
Versão 1.22.0 (10 de setembro de 2024)¶
Novos recursos¶
Adição das seguintes novas funções em
snowflake.snowpark.functions
:array_remove
ln
Melhorias¶
Documentação aprimorada para
Session.write_pandas
tornando a opçãouse_logical_type
mais explícita.Adição de suporte para especificar o seguinte para
DataFrameWriter.save_as_table
:enable_schema_evolution
data_retention_time
max_data_extension_time
change_tracking
copy_grants
iceberg_config
– Um dicionário que pode conter as seguintes opções de configuração Iceberg:external_volume
catalog
base_location
catalog_sync
storage_serialization_policy
Adição de suporte para especificar o seguinte para
DataFrameWriter.copy_into_table
:iceberg_config
– Um dicionário que pode conter as seguintes opções de configuração Iceberg:external_volume
catalog
base_location
catalog_sync
storage_serialization_policy
Adição de suporte para especificar os seguintes parâmetros para
DataFrame.create_or_replace_dynamic_table
:mode
refresh_mode
initialize
clustering_keys
is_transient
data_retention_time
max_data_extension_time
Correções de bugs¶
Correção de um bug em
session.read.csv
que causava um erro ao configurarPARSE_HEADER = True
em um formato de arquivo definido externamente.Correção de um bug na geração de consulta a partir de operações de conjunto que permitia a geração de consultas duplicadas quando os filhos tinham subconsultas comuns.
Correção de um bug em
session.get_session_stage
que fazia referência a um estágio inexistente após alternar o banco de dados ou esquema.Correção de um bug onde chamar
DataFrame.to_snowpark_pandas
sem inicializar explicitamente o plugin Snowpark pandas causava um erro.Correção de um bug onde o uso da função
explode
na criação de tabela dinâmica causava um erro de compilação SQL devido à conversão de tipo booliano incorreta no parâmetroouter
.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adição de suporte para coerção de tipo ao passar colunas como entrada para chamadas UDF.
Adição de suporte para
Index.identical
.
Correções de bugs¶
Correção de um bug em que o modo de truncamento em
DataFrameWriter.save_as_table
tratava incorretamente DataFrames com apenas um subconjunto de colunas da tabela existente.Correção de um bug em que a função
to_timestamp
não define o fuso horário padrão do tipo de dados da coluna.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte limitado para o tipo
Timedelta
, incluindo os seguintes recursos. O Snowpark pandas aumentaráNotImplementedError
para os casos de usoTimedelta
sem suporte.suporte para rastrear o tipo
Timedelta
através decopy
,cache_result
,shift
,sort_index
,assign
,bfill
,ffill
,fillna
,compare
,diff
,drop
,dropna
,duplicated
,empty
,equals
,insert
,isin
,isna
,items
,iterrows
,join
,len
,mask
,melt
,merge
,nlargest
,nsmallest
eto_pandas
.Suporte à conversão de não timedelta para timedelta via
astype
.NotImplementedError
será gerado para o restante dos métodos que não oferecem suporte aTimedelta
.Suporte à subtração de dois carimbos de data/hora para obter um
Timedelta
.Suporte à indexação com colunas de dados
Timedelta
.Suporte à adição ou subtração de carimbos de data/hora e
Timedelta
.Suporte à aritmética binária entre dois valores
Timedelta
.Suporte à aritmética binária e comparações entre valores
Timedelta
e valores numérico.Suporte para
TimedeltaIndex
lento.Suporte para
pd.to_timedelta
.Suporte às agregações
GroupBy
min
,max
,mean
,idxmax
,idxmin
,std
,sum
,median
,count
,any
,all
,size
,nunique
,head
,tail
eaggregate
.Suporte a filtragens
GroupBy
first
elast
.Suporte aos atributos
TimedeltaIndex
:days
,seconds
,microseconds
enanoseconds
.Suporte para
diff
com colunas de carimbo de data/hora emaxis=0
eaxis=1
.Suporte aos métodos
TimedeltaIndex
:ceil
,floor
eround
.Suporte ao método
TimedeltaIndex.total_seconds
.
Adição de suporte para operadores aritméticos e de comparação do índice.
Adição de suporte para
Series.dt.round
.Adição das páginas de documentação para
DatetimeIndex
.Adição de suporte para
Index.name
,Index.names
,Index.rename
eIndex.set_names
.Adição de suporte para
Index.__repr__
.Adicionado suporte para
DatetimeIndex.month_name
eDatetimeIndex.day_name
.Adição de suporte para
Series.dt.weekday
,Series.dt.time
eDatetimeIndex.time
.Adicionado suporte para
Index.min
eIndex.max
.Adição de suporte para
pd.merge_asof
.Adicionado suporte para
Series.dt.normalize
eDatetimeIndex.normalize
.Adição de suporte para
Index.is_boolean
,Index.is_integer
,Index.is_floating
,Index.is_numeric
eIndex.is_object
.Adição de suporte para
DatetimeIndex.round
,DatetimeIndex.floor
eDatetimeIndex.ceil
.Adicionado suporte para
Series.dt.days_in_month
eSeries.dt.daysinmonth
.Adicionado suporte para
DataFrameGroupBy.value_counts
eSeriesGroupBy.value_counts
.Adicionado suporte para
Series.is_monotonic_increasing
eSeries.is_monotonic_decreasing
.Adicionado suporte para
Index.is_monotonic_increasing
eIndex.is_monotonic_decreasing
.Adição de suporte para
pd.crosstab
.Adição de suporte para
pd.bdate_range
e inclusão de suporte de frequência comercial (B, BME, BMS, BQE, BQS, BYE, BYS) parapd.date_range
epd.bdate_range
.Adição de suporte para objetos
Index
lentos comolabels
emDataFrame.reindex
eSeries.reindex
.Adição de suporte para
Series.dt.days
,Series.dt.seconds
,Series.dt.microseconds
eSeries.dt.nanoseconds
.Adição de suporte para criar um
DatetimeIndex
a partir de umIndex
de tipo numérico ou de cadeia de caracteres.Adição de suporte para indexação de cadeia de caracteres com objetos
Timedelta
.Adição de suporte ao método
Series.dt.total_seconds
.
Melhorias¶
Desempenho melhorado de concatenação e junção quando operações são executadas em uma série proveniente do mesmo DataFrame, evitando junções desnecessárias.
Refatoração de
quoted_identifier_to_snowflake_type
para evitar a realização de consultas de metadados se os tipos tiverem sido armazenados em cache localmente.Melhoria de
pd.to_datetime
para lidar com todos os casos de entrada local.Crie um índice lento a partir de outro índice lento sem extrair dados para o cliente.
Geração de
NotImplementedError
para operadores bit a bit de Index.Exibe uma mensagem de erro mais clara quando
Index.names
é definido como um objeto que não é do tipo lista.Emita um aviso sempre que valores
MultiIndex
forem extraídos localmente.Mensagem de aviso aprimorada para
pd.read_snowflake
para incluir o motivo da criação quando a criação da tabela temporária é acionada.Desempenho aprimorado para
DataFrame.set_index
, ou definirDataFrame.index
ouSeries.index
evitando verificações que exigem avaliação rápida. Como consequência, quando o novo índice não corresponde ao comprimento de objeto atual deSeries
ouDataFrame
, umValueError
não é mais gerado. Em vez disso, quando o objetoSeries
ouDataFrame
é maior que o índice fornecido, o novo índice doSeries
ouDataFrame
é preenchido com valoresNaN
para os elementos “extras”. Caso contrário, os valores extras no índice fornecido serão ignorados.
Correções de bugs¶
Parou de ignorar nanossegundos em escalares
pd.Timedelta
.Correção de
AssertionError
na árvore de operações binárias.Correção de bug em
Series.dt.isocalendar
usando uma série nomeada.Correção do argumento
inplace
para objetos Series derivados de colunas DataFrame.Correção de um bug em que
Series.reindex
eDataFrame.reindex
não atualizava o nome do índice de resultados corretamente.Correção de um bug em que
Series.take
não dava erro quandoaxis=1
era especificado.
Versão 1.21.1 (5 de setembro de 2024)¶
Correções de bugs¶
Correção de um bug em que o uso de
to_pandas_batches
com tarefas assíncronas causava um erro devido ao tratamento incorreto da espera pela conclusão da consulta assíncrona.
Versão 1.21.0 (19 de agosto de 2024)¶
Novos recursos¶
Adição de suporte para
snowflake.snowpark.testing.assert_dataframe_equal
, que é uma função utilitária para verificar a igualdade de dois DataFrames Snowpark.
Melhorias¶
Adição de suporte para limitações de tamanho de cadeia de caracteres do lado do servidor.
Adição de suporte para criar e invocar procedimentos armazenados, UDFs e UDTFs com argumentos opcionais.
Adição de suporte para linhagem de coluna na
DataFrame.lineage.trace
API.Adição de suporte para passar as opções
INFER_SCHEMA
paraDataFrameReader
viaINFER_SCHEMA_OPTIONS
.Adição de suporte para passagem de parâmetro
parameters
paraColumn.rlike
eColumn.regexp
.Adição de suporte para limpeza automática de tabelas temporárias criadas por
df.cache_result()
na sessão atual quando os DataFrame não são mais referenciados (ou seja, são coletados como lixo). Ainda é um recurso experimental e não é habilitado por padrão. Pode ser habilitado configurandosession.auto_clean_up_temp_table_enabled
paraTrue
.Adição de suporte para literais de cadeia de caracteres ao parâmetro
fmt
desnowflake.snowpark.functions.to_date
.
Correções de bugs¶
Correção de um bug onde o SQL gerado para selecionar a coluna
*
tinha uma subconsulta incorreta.Correção de um bug em
DataFrame.to_pandas_batches
no qual o iterador podia gerar um erro se uma determinada transformação fosse feita nos DataFrame pandas devido ao nível de isolamento errado.Correção de um bug em
DataFrame.lineage.trace
para dividir corretamente o nome e a versão da exibição do recurso citado.Correção de um bug em
Column.isin
que causava geração inválida de SQL ao passar uma lista vazia.Correção de um bug que não gerava
NotImplementedError
ao configurar uma célula com um item do tipo lista.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adicionado suporte para as seguintes APIs:
snowflake.snowpark.functions
rank
dense_rank
percent_rank
cume_dist
ntile
datediff
array_agg
snowflake.snowpark.column.Column.within_group
Adição de suporte para análise de sinalizadores em instruções Regex para planos simulados. Isso mantém a paridade com as alterações
rlike
eregexp
acima.
Correções de bugs¶
Correção de um bug em que a as funções de janela
LEAD
eLAG
não manipulavam a opçãoignore_nulls
corretamente.Correção de um bug em que os valores não eram preenchidos no DataFrame de resultado durante a inserção de uma operação de mesclagem de tabela.
Melhorias¶
Correção do pandas
FutureWarning
sobre a indexação de inteiro.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte para
DataFrame.backfill
,DataFrame.bfill
,Series.backfill
eSeries.bfill
.Adição de suporte para
DataFrame.compare
eSeries.compare
com parâmetros padrão.Adicionado suporte para
Series.dt.microsecond
eSeries.dt.nanosecond
.Adicionado suporte para
Index.is_unique
eIndex.has_duplicates
.Adição de suporte para
Index.equals
.Adição de suporte para
Index.value_counts
.Adicionado suporte para
Series.dt.day_name
eSeries.dt.month_name
.Adição de suporte para inclusão no Index, por exemplo,
df.index[:10]
.Adicionado suporte para
DataFrame.unstack
eSeries.unstack
.Adicionado suporte para
DataFrame.asfreq
eSeries.asfreq
.Adicionado suporte para
Series.dt.is_month_start
eSeries.dt.is_month_end
.Adicionado suporte para
Index.all
eIndex.any
.Adicionado suporte para
Series.dt.is_year_start
eSeries.dt.is_year_end
.Adicionado suporte para
Series.dt.is_quarter_start
eSeries.dt.is_quarter_end
.Adição de suporte para
DatetimeIndex
lento.Adicionado suporte para
Series.argmax
eSeries.argmin
.Adição de suporte para
Series.dt.is_leap_year
.Adição de suporte para
DataFrame.items
.Adicionado suporte para
Series.dt.floor
eSeries.dt.ceil
.Adição de suporte para
Index.reindex
.Adição de suporte para as propriedades
DatetimeIndex
:year
,month
,day
,hour
,minute
,second
,microsecond
,nanosecond
,date
,dayofyear
,day_of_year
,dayofweek
,day_of_week
,weekday
,quarter
,is_month_start
,is_month_end
,is_quarter_start
,is_quarter_end
,is_year_start
,is_year_end
eis_leap_year
.Adicionado suporte para
Resampler.fillna
eResampler.bfill
.Adição de suporte limitado para o tipo
Timedelta
, incluindo a criação de colunasTimedelta
eto_pandas
.Adicionado suporte para
Index.argmax
eIndex.argmin
.
Melhorias¶
Remoção da mensagem de aviso de versão pública ao importar pandas do Snowpark.
Consulta de contagem desnecessária removida do método
SnowflakeQueryCompiler.is_series_like
.Dataframe.columns
agora retorna um objeto Index do pandas nativo em vez de um objeto Index do Snowpark.Refatoração e introdução do argumento
query_compiler
no construtorIndex
para criarIndex
a partir do compilador de consulta.pd.to_datetime
agora retorna um objetoDatetimeIndex
em vez de um objetoSeries
.pd.date_range
agora retorna um objetoDatetimeIndex
em vez de um objetoSeries
.
Correções de bugs¶
Agora, passar uma função de agregação sem suporte para
pivot_table
geraNotImplementedError
em vez deKeyError
.Rótulos de eixo e nomes chamáveis removidos de mensagens de erro e telemetria sobre agregações não compatíveis.
Correção de
AssertionError
emSeries.drop_duplicates
eDataFrame.drop_duplicates
quando chamado depois desort_values
.Correção de um bug em
Index.to_frame
no qual o nome da coluna do quadro de resultados pode estar errado quando o nome não é especificado.Correção de um bug em que algumas docstrings de Index eram ignoradas.
Correção de um bug em
Series.reset_index(drop=True)
no qual o nome do resultado poderia estar errado.Correção de um bug na ordenação de
Groupby.first/last
pelas colunas corretas na expressão de janela subjacente.
Versão 1.20.0 (17 de julho de 2024)¶
A versão 1.20.0 da biblioteca Snowpark para Python apresenta alguns novos recursos.
Novos recursos¶
Adição de rastreamento distribuído usando APIs de telemetria aberta para funções de procedimento armazenado em
DataFrame
:_execute_and_get_query_id
Adição de suporte à função
arrays_zip
.Desempenho aprimorado para expressões de colunas binárias e
df._in
evitando conversões desnecessárias para valores numérico. Você pode habilitar essa otimização configurandosession.eliminate_numeric_sql_value_cast_enabled = True
.Mensagens de erro aprimoradas para
write_pandas
quando a tabela de destino não existe eauto_create_table=False
.Adição de rastreamento de telemetria aberto em funções UDxF no Snowpark.
Adição de rastreamento de telemetria aberta no registro de procedimento armazenado no Snowpark.
Adição de um novo parâmetro opcional chamado
format_json
à funçãoSession.SessionBuilder.app_name
que define o nome do aplicativo emSession.query_tag
no formato JSON. Por padrão, este parâmetro é definido comoFalse
.
Correções de bugs¶
Correção de um bug onde o SQL gerado para
lag(x, 0)
estava incorreto e falhava com a mensagem de erroargument 1 to function LAG needs to be constant, found 'SYSTEM$NULL_TO_FIXED(null)'
.
Atualizações de testes locais do Snowpark¶
Novos recursos¶
Adicionado suporte para as seguintes APIs:
snowflake.snowpark.functions
random
Adição de novos parâmetros à função
patch
ao registrar uma função simulada:distinct
permite que uma função alternativa seja especificada para quando uma função SQL deve ser distinta.pass_column_index
passa um parâmetro nomeado,column_index
, para a função simulada que contém opandas.Index
para os dados de entrada.pass_row_index
passa um parâmetro nomeado,row_index
, para a função simulada que é o número da linha com índice 0 na qual a função está operando atualmente.pass_input_data
passa um parâmetro nomeado,input_data
, para a função simulada que contém todo o dataframe de entrada para a expressão atual.Adição de suporte ao parâmetro
column_order
no métodoDataFrameWriter.save_as_table
.
Correções de bugs¶
Correção de um bug que fazia com que as colunas
DecimalType
fossem truncadas incorretamente para precisão de inteiros quando usadas emBinaryExpressions
.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de novo suporte de API para o seguinte:
DataFrames
DataFrame.nlargest
eDataFrame.nsmallest
DataFrame.assign
DataFrame.stack
DataFrame.pivot
DataFrame.to_csv
DataFrame.corr
DataFrame.corr
DataFrame.equals
DataFrame.reindex
DataFrame.at
eDataFrame.iat
Series
Series.nlargest
eSeries.nsmallest
Series.at
eSeries.iat
Series.dt.isocalendar
Series.equals
Series.reindex
Series.to_csv
Series.case_when
exceto quando a condição ou substituição for exigívelseries.plot()
materializou os dados para o cliente local
GroupBy
DataFrameGroupBy.all
eDataFrameGroupBy.any
As agregações
DataFrameGroupBy
eSeriesGroupBy
, efirst
elast
.DataFrameGroupBy.get_group
SeriesGroupBy.all
eSeriesGroupBy.any
Geral
pd.pivot
read_excel
(Usa pandas local para processamento)df.plot()
materializou os dados para o cliente local
APIs de existência estendida, da seguinte forma:
Adição de suporte para
replace
efrac > 1
emDataFrame.sample
eSeries.sample
.Adição de suporte parcial para
Series.str.translate
onde os valores emtable
são cadeias de caracteres de ponto de código único.Adição de suporte ao parâmetro
limit
quando o parâmetromethod
é usado emfillna
.
Adição de páginas de documentação para
Index
e suas APIs.
Correções de bugs¶
Correção de um problema ao usar np.where e df.where quando o
other
escalar é o literal 0.Correção de um bug relacionado à perda de precisão ao converter para Snowpark pandas
DataFrame
ouSeries
comdtype=np.uint64
.Correção de um bug onde
values
é definido comoindex
quandoindex
ecolumns
contêm todas as colunas no DataFrame durantepivot_table
.
Melhorias¶
Adição de suporte para
Index.copy()
.Adição de suporte para Index APIs:
dtype
,values
,item()
,tolist()
,to_series()
eto_frame()
.Expanda o suporte para DataFrames sem linhas em
pd.pivot_table
eDataFrame.pivot_table
.Adição de suporte ao parâmetro
inplace
emDataFrame.sort_index
eSeries.sort_index
.
Versão 1.19.0 (25 de junho de 2024)¶
A versão 1.19.0 da biblioteca Snowpark para Python apresenta alguns novos recursos.
Novos recursos¶
Adição de suporte à função
to_boolean
.Adição das páginas de documentação para
Index
e suas APIs.
Correções de bugs¶
Correção de um bug em que procedimentos armazenados em Python com tipo de retorno de tabelas falhavam quando executados em uma tarefa.
Correção de um bug em que
df.dropna
falhava devido à profundidade de recursão máxima :codenowrap:`RecursionError: excedida quando tinha mais de 500 colunas.Correção de um bug em que
AsyncJob.result("no_result")
não esperava a execução da consulta terminar.
Atualizações de testes locais¶
Novos recursos¶
Adição de suporte ao parâmetro
strict
ao registrar UDFs e procedimentos armazenados.
Correções de bugs¶
Correção de um bug em
convert_timezone
que fazia com que a configuração do parâmetrosource_timezone
retornasse um erro.Correção de um bug onde a criação de um DataFrame com dados vazios do tipo
DateType
geravaAttributeError
.Correção de um bug em que a mesclagem de tabela falhava quando havia uma cláusula de atualização, mas nenhuma atualização ocorria.
Correção de um bug na implementação simulada de
to_char
que geravaIndexError
quando uma coluna de entrada tinha um índice de linha não consecutivo.Correção de um bug no tratamento de expressões
CaseExpr
que geravaIndexError
quando uma coluna de entrada tinha um índice de linha não consecutivo.Correção de um bug na implementação de
Column.like
que geravaIndexError
quando uma coluna de entrada tinha um índice de linha não consecutivo.
Melhorias¶
Adição de suporte para coerção de tipo na implementação de
DataFrame.replace
,DataFrame.dropna
e a função simuladaiff
.
Atualizações da Snowpark pandas API¶
Novos recursos¶
Adição de suporte parcial para
DataFrame.pct_change
eSeries.pct_change
sem os parâmetrosfreq
elimit
.Adição de suporte para
Series.str.get
.Adição de suporte para
Series.dt.dayofweek
,Series.dt.day_of_week
,Series.dt.dayofyear
eSeries.dt.day_of_year
.Adição de suporte para
Series.str.__getitem__ (Series.str[…])
.Adição de suporte para
Series.str.lstrip
eSeries.str.rstrip
.Adição de suporte para
DataFrameGroupby.size
eSeriesGroupby.size
.Adição de suporte para
DataFrame.expanding
eSeries.expanding
para as agregaçõescount
,sum
,min
,max
,mean
,std
evar
comaxis=0
.Adição de suporte para
DataFrame.rolling
eSeries.rolling
para contagem de agregação comaxis=0
.Adição de suporte para
Series.str.match
.Adição de suporte para
DataFrame.resample
eSeries.resample
para tamanho da agregação.
Correções de bugs¶
Correção de um bug que fazia com que a saída das colunas
GroupBy.aggregate
fosse ordenada incorretamente.Correção de um bug onde chamar
DataFrame.describe
em um quadro com colunas duplicadas de diferentesdtypes
podia causar um erro ou resultados incorretos.Correção de um bug em
DataFrame.rolling
eSeries.rolling
, para que agorawindow=0
lanceNotImplementedError
em vez deValueError
.
Melhorias¶
Adição de suporte para agregações nomeadas em
DataFrame.aggregate
eSeries.aggregate
comaxis=0
.pd.read_csv
lê usando o analisador nativo do pandas CSV e depois carrega os dados no Snowflake usando Parquet. Isso habilita a maioria dos parâmetros compatíveis comread_csv
, incluindo a análise de data e conversões numéricas. O upload via Parquet é quase duas vezes mais rápido que o upload via CSV.Trabalho inicial para oferecer suporte a um
pd.Index
diretamente no Snowpark pandas. O suporte parapd.Index
como um componente de primeira classe do Snowpark pandas está em desenvolvimento ativo.Adição de um construtor de índice lento e suporte para
len
,shape
,size
,empty
,to_pandas()
enames
. Paradf.index
, o Snowpark pandas cria um objeto de índice preguiçoso.Para
df.columns
, o Snowpark pandas oferece suporte a uma versão não lenta de umIndex
pois os dados já estão armazenados localmente.
Versão 1.18.0 (28/05/2024)¶
A versão 1.18.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionados os métodos
DataFrame.cache_result
eSeries.cache_result
para os usuários persistirem objetosDataFrame
eSeries
para uma tabela temporária durante a duração de uma sessão para melhorar a latência de operações subsequentes.
Melhorias¶
Adicionado suporte para
DataFrame.pivot_table
sem o parâmetroindex
e com o parâmetromargins
.Atualizou a assinatura de
DataFrame.shift
,Series.shift
,DataFrameGroupBy.shift
eSeriesGroupBy.shift
para combinar com pandas 2.2.1. O Snowpark pandas ainda não oferece suporte ao argumento de sufixo recém-adicionado ou aos valores de sequência de períodos.Adição novamente de suporte para
Series.str.split
.
Correções de bugs¶
Corrigido um problema com colunas mistas para métodos da cadeia de caracteres (
Series.str.*
).
Atualizações de testes locais¶
Novos recursos¶
Adicionado suporte para as seguintes opções de leitura
DataFrameReader
para formatos de arquivo CSV e JSON:PURGE
PATTERN
INFER_SCHEMA com valor
False
ENCODING com valor
UTF8
Adicionado suporte para
DataFrame.analytics.moving_agg
eDataFrame.analytics.cumulative_agg_agg
.Adicionado suporte para o parâmetro
if_not_exists
durante o registro da UDF e do procedimento armazenado.
Correções de bugs¶
Corrigido um bug com formatos de tempo de processamento em que a parte do segundo fracionário não era manipulada corretamente.
Corrigiu um bug que causava falhas nas chamadas de função em
*
.Corrigido um bug que impedia a criação de objetos do tipo
map
estruct
.Corrigido um bug onde a função
date_add
não conseguia manipular alguns tipos numéricos.Corrigido um bug onde a conversão
TimestampType
resultava em dados incorretos.Corrigido um bug que fazia com que os dados
DecimalType
tivessem precisão incorreta em alguns casos.Corrigido um bug onde referenciar uma tabela ou exibição ausente gerava um
IndexError
.Corrigido um bug onde a função simulada
to_timestamp_ntz
não conseguia lidar com dadosNone
.Corrigido um bug em que as UDFs simuladas tratavam os dados de saída de
None
de forma inadequada.Corrigido um bug onde os atributos ignorados
DataFrame.with_column_renamed
do paiDataFrames
após as operações de junção.Corrigido um bug onde a precisão inteira de valores grandes era perdida quando convertida para um
DataFrame
pandas.Corrigido um bug onde o esquema de um objeto
datetime
estava errado ao criar umDataFrame
de umDataFrame
pandas.Corrigido um bug na implementação de
Column.equal_nan
onde dados nulos foram manipulados incorretamente.Corrigido um bug onde os atributos ignorados
DataFrame.drop
do paiDataFrames
após as operações de junção.Corrigido um bug na função simulada
date_part
onde o tipo de coluna foi definido incorretamente.Corrigido um bug onde
DataFrameWriter.save_as_table
não gerava exceções ao inserir dados nulos em colunas não anuláveis.Corrigido um bug na implementação de
DataFrameWriter.save_as_table
onde:Falha ao anexar ou truncar quando os dados recebidos tinham um esquema diferente da tabela existente.
O truncamento falhou quando os dados recebidos não especificaram colunas que são anuláveis.
Melhorias¶
Foi removida a verificação de dependência para
pyarrow
porque não é usada.Melhorou a cobertura do tipo de alvo de
Column.cast
, adicionando suporte para conversão para tipos booleanos e todos os tipos integrais.Alinhou a experiência de erro ao chamar UDFs e procedimentos armazenados.
Adicionadas mensagens de erro apropriadas para as opções
is_permanent
eanonymous
em UDFs e registro de procedimentos armazenados para deixar mais claro que esses recursos ainda não são suportados.Operações de leitura de arquivo com opções e valores não suportados agora aumentam
NotImplementedError
em vez de avisos e informações de erro pouco claras.
Versão 1.17.0 (21/05/2024)¶
A versão 1.17.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado suporte para adicionar um comentário em tabelas e exibições usando as funções listadas abaixo:
DataFrameWriter.save_as_table
DataFrame.create_or_replace_view
DataFrame.create_or_replace_temp_view
DataFrame.create_or_replace_dynamic_table
Melhorias¶
Mensagem de erro aprimorada para lembrar os usuários de definir
{"infer_schema": True}
ao ler o arquivo CSV sem especificar seu esquema.
Atualizações de testes locais¶
Novos recursos¶
Adicionado suporte para conversão de dados
NumericType
eVariantType
na função simuladato_timestamp_ltz
,to_timestamp_ntz
,to_timestamp_tz
eto_timestamp
.Adicionado suporte para conversão de dados
DecimalType
,BinaryType
,ArrayType
,MapType
,TimestampType
,DateType
eTimeType
na função simuladato_char
.Adicionado suporte para as seguintes APIs:
snowflake.snowpark.functions.to_varchar
snowflake.snowpark.DataFrame.pivot
snowflake.snowpark.Session.cancel_all
Introduziu uma nova classe de exceção
snowflake.snowpark.mock.exceptions.SnowparkLocalTestingException
.Adicionado suporte para conversão para
FloatType
.
Correções de bugs¶
Corrigido um bug que procedimentos armazenados e UDFs não devem remover as importações já existentes
sys.path
durante a etapa de limpeza.Corrigido um bug que ao processar o formato
datetime
, a parte do segundo fracionário não é tratada corretamente.Corrigido um bug em que as operações de arquivo na plataforma Windows não conseguiam manipular corretamente os separadores de arquivo em nomes de diretório.
Corrigiu um bug na plataforma Windows que, ao ler um dataframe do pandas, um
IntervalType
coluna com dados inteiros não pode ser processada.Corrigido um bug que impedia os usuários de selecionar várias colunas com o mesmo alias.
Corrigido um bug onde
Session.get_current_[schema |database| role |user| account|warehouse]
retorna identificadores em maiúsculas quando os identificadores estão entre aspas.Corrigido um bug em que a função
substr
esubstring
não pode lidar com uma base zerostart_expr
.
Melhorias¶
Padronizou a experiência de erro aumentando
SnowparkLocalTestingException
em casos de erro, o que está no mesmo nível doSnowparkSQLException
levantado em execução não local.Experiência de erro melhorada do método
Session.write_pandas
, de maneira queNotImplementError
será acusado ao chamar.A experiência de erro foi alinhada com a reutilização de uma sessão fechada em execução não local.
Versão 1.16.0 (08/05/2024)¶
A versão 1.16.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado
snowflake.snowpark.Session.lineage.trace
para explorar a linhagem de dados de objetos Snowflake.Adicionado suporte para registrar procedimentos armazenados com pacotes fornecidos como módulos Python.
Adicionado suporte para análise de esquema de tipo estruturado.
Correções de bugs¶
Corrigido um bug em que, ao inferir um esquema, aspas simples eram adicionadas aos arquivos de estágio que já tinham aspas simples.
Atualizações de testes locais¶
Novos recursos¶
Adicionado suporte para
StringType
,TimestampType
eVariantType
conversão de dados na função simuladato_date
.Adicionado suporte para as seguintes APIs:
snowflake.snowpark.functions
:get
concat
concat_ws
Correções de bugs¶
Corrigido um bug que fazia com que os valores
NaT
eNaN
não fossem reconhecidos.Corrigido um bug em que, ao inferir um esquema, aspas simples eram adicionadas aos arquivos de estágio que já tinham aspas simples.
Corrigido um bug onde
DataFrameReader.csv
não conseguiu manipular valores entre aspas contendo um delimitador.Corrigido um bug que quando há um valor
None
em um cálculo aritmético, a saída deve permanecerNone
em vez demath.nan
.Corrigido um bug na função
sum
ecovar_pop
que quando há ummath.nan
valor nos dados, a saída também deve sermath.nan
.Corrigido um bug em que as operações de estágio não conseguiam manipular diretórios.
Corrigiu um bug que
DataFrame.to_pandas
deve tomar tipos numéricos Snowflake com precisão 38 comoint64
.
Versão 1.15.0 (24/04/2024)¶
A versão 1.15.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado o modo de salvar
truncate
emDataFrameWrite
para substituir tabelas existentes truncando a tabela subjacente em vez de removê-la.Telemetria adicionada para calcular a altura do plano de consulta e o número de nós duplicados durante operações de coleta.
Adicionadas as funções abaixo para descarregar dados de um
DataFrame
em um ou mais arquivos em um estágio:DataFrame.write.json
DataFrame.write.csv
DataFrame.write.parquet
Adicionado rastreamento distribuído usando telemetria aberta APIs para funções de ação em
DataFrame
eDataFrameWriter
:snowflake.snowpark.DataFrame
:collect
collect_nowait
to_pandas
count
show
snowflake.snowpark.DataFrameWriter
:save_as_table
Adicionado suporte para
snow://
URLs parasnowflake.snowpark.Session.file.get
esnowflake.snowpark.Session.file.get_stream
Adicionado suporte para registrar procedimentos armazenados e UDFs com um
comment
.O suporte do cliente da UDAF está pronto para versão preliminar pública. Fique atento ao anúncio do Snowflake sobre a versão preliminar pública da UDAF.
Adicionado suporte para pivô dinâmico. Este recurso está atualmente em versão preliminar privada.
Melhorias¶
Melhorado o desempenho da consulta gerada, tanto na compilação quanto na execução, convertendo subconsultas duplicadas em expressões de tabela comum (CTEs). Ainda é um recurso experimental e não é habilitado por padrão. Você pode habilitá-lo configurando
session.cte_optimization_enabled
comoTrue
.
Correções de bugs¶
Corrigido um bug onde
statement_params
não é passado para execuções de consulta que registram procedimentos armazenados e funções definidas pelo usuário.Corrigido um bug que fazia com que
snowflake.snowpark.Session.file.get_stream
falhasse nos locais de estágio citados.Corrigido um bug que indicava um tipo interno em
utils.py
pode aumentarAttributeError
quando o módulo subjacente não pode ser encontrado.
Atualizações de testes locais¶
Novos recursos¶
Adicionado suporte para registro de UDFs e procedimentos armazenados.
Adicionado suporte para as seguintes APIs:
snowflake.snowpark.Session
:file.put
file.put_stream
file.get
file.get_stream
read.json
add_import
remove_import
get_imports
clear_imports
add_packages
add_requirements
clear_packages
remove_package
udf.register
udf.register_from_file
sproc.register
sproc.register_from_file
snowflake.snowpark.functions
current_database
current_session
date_trunc
object_construct
object_construct_keep_null
pow
sqrt
udf
sproc
Adicionado suporte para
StringType
,TimestampType
eVariantType
conversão de dados na função simuladato_time
.
Correções de bugs¶
Corrigido um bug que preenchia colunas com valores nulos para funções constantes.
Corrigidos
to_object
,to_array
eto_binary
para lidar melhor com entradas nulas.Corrigido um bug que fazia com que a comparação de dados do carimbo de data/hora não pudesse lidar com anos posteriores a 2262.
Corrigido um bug que
Session.builder.getOrCreate
deve retornar a sessão simulada criada.
Versão 1.14.0 (20/03/2024)¶
A versão 1.14.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado suporte para criação de UDTFs vetorizadas com o método
process
.Adicionado suporte para funções de dataframe:
to_timestamp_ltz
to_timestamp_ntz
to_timestamp_tz
locate
Adicionado suporte para o tipo ASOF JOIN.
Adicionado suporte para as seguintes APIs de teste locais:
snowflake.snowpark.functions:
to_double
to_timestamp
to_timestamp_ltz
to_timestamp_ntz
to_timestamp_tz
greatest
least
convert_timezone
dateadd
date_part
snowflake.snowpark.Session:
get_current_account
get_current_warehouse
get_current_role
use_schema
use_warehouse
use_database
use_role
Melhorias¶
Telemetria adicionada aos testes locais.
Melhorada a mensagem de erro de
DataFrameReader
para acusar o erroFileNotFound
ao ler um caminho que não existe ou quando não há arquivos no caminho.
Correções de bugs¶
Corrigido um bug em
SnowflakePlanBuilder
ondesave_as_table
não filtra corretamente as colunas cujos nomes começam com$
e é seguido por um número.Corrigido um bug em que os parâmetros de instrução podem não ter efeito ao resolver importações e pacotes.
Erros corrigidos em testes locais:
Junções LEFT ANTI e LEFT SEMI descartam linhas com valores nulos.
DataFrameReader.csv
analisa incorretamente os dados quando o parâmetro opcionalfield_optionally_enclosed_by
é especificado.Column.regexp
considera apenas a primeira entrada quandopattern
é umColumn
.Table.update
geraKeyError
ao atualizar valores nulos nas linhas.As colunas VARIANT acusaram erros em
DataFrame.collect
.count_distinct
não funciona corretamente ao contar.Valores nulos em colunas inteiras geram
TypeError
.
Versão 1.13.0 (26/02/2024)¶
A versão 1.13.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Novos recursos¶
Adicionado suporte para um argumento
date_part
opcional na funçãolast_day
.SessionBuilder.app_name
definiráquery_tag
após a criação da sessão.Adicionado suporte para as seguintes funções de teste locais:
current_timestamp
current_date
current_time
strip_null_value
upper
lower
length
initcap
Melhorias¶
Adicionada lógica de limpeza no desligamento do intérprete para fechar todas as sessões ativas.
Correções de bugs¶
Corrigido um bug em
DataFrame.to_local_iterator
onde o iterador poderia produzir resultados errados se outra consulta fosse executada antes do iterador terminar devido ao nível de isolamento errado.Corrigido um bug que truncava nomes de tabelas em mensagens de erro ao executar um plano com testes locais habilitados.
Corrigido um bug que
Session.range
retornava um resultado vazio quando o intervalo era grande.
Versão 1.12.1 (08/02/2024)¶
A versão 1.12.1 da biblioteca do Snowpark apresenta alguns novos recursos.
Melhorias¶
Use
split_blocks=True
por padrão, durante a conversãoto_pandas
, para alocação de memória ideal. Este parâmetro é passado parapyarrow.Table.to_pandas
, o que permite quePyArrow
divida a alocação de memória em blocos menores e mais gerenciáveis, em vez de alocar um único bloco contíguo. Isso resulta em melhor gerenciamento de memória ao lidar com conjuntos de dados maiores.
Correções de bugs¶
Corrigido um bug em
DataFrame.to_pandas
que causava um erro ao avaliar um Dataframe com uma colunaIntergerType
com valores nulos.
Versão 1.12.0 (29/01/2024)¶
A versão 1.12.0 da biblioteca do Snowpark apresenta alguns novos recursos.
Mudanças de comportamento (compatível com API)¶
Ao analisar tipos de dados durante uma operação
to_pandas
, contamos com o valor de precisão GS para corrigir problemas de precisão para valores inteiros grandes. Isso pode afetar os usuários onde uma coluna que foi retornada anteriormente comoint8
é retornada comoint64
. Os usuários podem corrigir isso especificando explicitamente valores de precisão para sua coluna de retorno.Comportamento alinhado para
Session.call
no caso de procedimentos armazenados de tabela em que a execução deSession.call
não acionaria um procedimento armazenado, a menos que uma operaçãocollect()
fosse executada.StoredProcedureRegistration
agora adiciona automaticamentesnowflake-snowpark-python
como uma dependência de pacote na versão local da biblioteca do cliente. Um erro será gerado se o servidor não puder suportar essa versão.
Novos recursos¶
statement_params
exposto emStoredProcedure.__call__
.Adicionados dois argumentos opcionais a
Session.add_import
:chunk_size
: o número de bytes para hash por parte dos arquivos carregados.whole_file_hash
: por padrão, apenas a primeira parte da importação carregada é criptografada para economizar tempo. Quando definido como true, cada arquivo carregado é totalmente hash.
Adicionados parâmetros
external_access_integrations
esecrets
ao criar um UDAF do Snowpark Python para permitir a integração com acesso externo.Adicionado um novo método
Session.append_query_tag
, que permite que uma tag adicional seja adicionada à tag de consulta atual, anexando-a como um valor separado por vírgula.Adicionado um novo método
Session.update_query_tag
, que permite atualizações em uma tag de consulta de dicionário codificada em JSON.SessionBuilder.getOrCreate
agora tentará substituir o singleton retornado quando a expiração do token for detectada.Adicionadas as seguintes funções em
snowflake.snowpark.functions
:array_except
create_map
sign
/signum
Adicionadas as seguintes funções a
DataFrame.analytics
:Adicionada a função
moving_agg
emDataFrame.analytics
para permitir agregações móveis, como somas e médias com vários tamanhos de janela.Adicionada a função
cummulative_agg
emDataFrame.analytics
para permitir agregações móveis, como somas e médias com vários tamanhos de janela.
Correções de bugs¶
Corrigido um bug em
DataFrame.na.fill
que fazia com que valores booleanos substituíssem erroneamente valores inteiros.Corrigido um bug em
Session.create_dataframe
onde o Snowpark DataFrames criado usando pandas DataFrames não inferia corretamente o tipo das colunas de carimbo de data/hora. O comportamento é o seguinte:Colunas de carimbo de data/hora anteriores sem fuso horário seriam convertidas em épocas de nanossegundos e inferidas como
LongType()
, mas agora serão mantidas corretamente como valores de carimbo de data/hora e inferidas comoTimestampType(TimestampTimeZone.NTZ)
.Colunas de carimbo de data/hora anteriores com fuso horário seriam inferidas como
TimestampType(TimestampTimeZone.NTZ)
e informações de fuso horário soltas, mas agora serão inferidas corretamente comoTimestampType(TimestampTimeZone.LTZ)
e as informações de fuso horário serão retidas corretamente.Defina o parâmetro de sessão
PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME
para voltar ao comportamento antigo. Snowflake recomenda que você atualize seu código para alinhá-lo com o comportamento correto porque o parâmetro será removido no futuro.
Corrigido um bug que
DataFrame.to_pandas
obtém o tipo decimal quando a escala não é 0 e cria um tipo de objeto empandas
. Em vez disso, convertemos o valor em um tipo float64.Bugs corrigidos que nivelavam incorretamente o SQL gerado quando uma das seguintes situações acontecia:
DataFrame.filter()
é chamado depois deDataFrame.sort().limit()
.DataFrame.sort()
oufilter()
é chamado em um DataFrame que já possui uma função de janela ou coluna geradora de dados dependente de sequência. Por exemplo,df.select("a", seq1().alias("b")).select("a", "b").sort("a")
não nivelará mais a cláusula de classificação.Uma coluna do gerador de dados dependente de janela ou sequência é usada após
DataFrame.limit()
. Por exemplo,df.limit(10).select(row_number().over())
não nivelará o limite e selecionará no SQL gerado.
Corrigido um bug em que o alias de uma coluna DataFrame gerava um erro quando o DataFame era copiado de outro DataFrame com uma coluna com alias. Por exemplo,
df = df.select(col("a").alias("b")) df = copy(df) df.select(col("b").alias("c")) # Threw an error. Now it's fixed.
Corrigido um bug em
Session.create_dataframe
em que o campo não anulável em um esquema não é respeitado para o tipo booleano. Observe que essa correção só tem efeito quando o usuário tem o privilégio de criar uma tabela temporária.Corrigido um bug no simplificador SQL onde instruções não selecionadas em
session.sql
descartavam uma consulta SQL quando usadas comlimit()
.Corrigido um bug que gerava uma exceção quando o parâmetro de sessão
ERROR_ON_NONDETERMINISTIC_UPDATE
era verdadeiro.