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.

aviso:

Como o Python 3.8 atingiu o Fim da vida útil, avisos de depreciação serão acionados ao usar o snowpark-python com o Python 3.8. Para obter mais detalhes, 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.26.0 (05/12/2024)

Novos recursos

  • Adição de suporte à propriedade version e ao método de classe get_active_session para a classe Session.

  • Adição de novos métodos e variáveis para aprimorar o tratamento de tipos de dados e a serialização/desserialização de JSON:

    • Para DataType, suas classes derivadas e StructField:

      • type_name: retorna o nome do tipo dos dados.

      • simple_string: fornece uma representação de cadeia de caracteres simples dos dados.

      • json_value: retorna os dados como um valor compatível com JSON.

      • json: converte os dados em uma cadeia de caracteres JSON.

    • Para ArrayType, MapType, StructField, PandasSeriesType, PandasDataFrameType e StructType:

      • from_json: permite que esses tipos sejam criados a partir dos dados JSON.

    • Para MapType:

      • keyType: chaves do mapa

      • valueType: valores do mapa

  • Adição de suporte para o método appName em SessionBuilder.

  • Adição de suporte ao argumento include_nulls em DataFrame.unpivot.

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

    • size para obter o tamanho da matriz, do objeto ou das colunas do mapa.

    • collect_list um alias de array_agg.

    • concat_ws_ignore_nulls para concatenar cadeias de caracteres com um separador, ignorando valores nulos.

    • substring torna o argumento len opcional.

  • Adição do parâmetro ast_enabled à sessão para uso interno (padrão: False).

Melhorias

  • Adição de suporte para especificar o seguinte para DataFrame.create_or_replace_dynamic_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 tipos de dados aninhados a DataFrame.print_schema

  • Adição de suporte para o parâmetro level a DataFrame.print_schema

  • Melhoria da flexibilidade de DataFrameReader e DataFrameWriter API com a inclusão de suporte para o seguinte:

    • Adição do método format a DataFrameReader e DataFrameWriter para especificar o formato do arquivo ao carregar ou descarregar resultados.

    • Adição do método load a DataFrameReader para funcionar em conjunto com format.

    • Adição do método save a DataFrameWriter para funcionar em conjunto com format.

    • Adição do suporte à leitura de argumentos de palavras-chave ao método options para DataFrameReader e DataFrameWriter.

  • Diminuição da dependência do cloudpickle para o Python 3.11 para simplificar os requisitos de compilação. No entanto, para o Python 3.11, o cloudpickle==2.2.1 continua sendo a única versão aceita.

Correções de bugs

  • Removidos os avisos de que os recursos da articulação dinâmica estavam em visualização privada, porque a articulação dinâmica agora está disponível de forma geral.

  • Correção de um bug em session.read.options em que os valores boolianos False eram incorretamente analisados como True no formato de arquivo gerado.

Atualizações de dependências

  • Adição de uma dependência de tempo de execução em python-dateutil.

Atualizações da Snowpark pandas API

Novos recursos

  • Adição de suporte parcial para Series.map quando arg é um pandas Series ou um collections.abc.Mapping. Não há suporte para instâncias de dict que implementam __missing__, mas não são instâncias de collections.defaultdict.

  • Adição de suporte para DataFrame.align e Series.align para axis=1 e axis=None.

  • Adição de suporte para pd.json_normalize.

  • Adição de suporte para GroupBy.pct_change com axis=0, freq=None e limit=None.

  • Adicionado suporte para DataFrameGroupBy.__iter__ e SeriesGroupBy.__iter__.

  • Adição de suporte para np.sqrt, np.trunc, np.floor, funções trigonométricas numpy, np.exp, np.abs, np.positive e np.negative.

  • Adição de suporte parcial ao método do protocolo de intercâmbio de dataframe DataFrame.__dataframe__().

Correções de bugs

  • Correção de um bug em df.loc, em que a configuração de uma única coluna de uma série resultava em valores None inesperados.

Melhorias

  • Use UNPIVOT INCLUDE NULLS para desarticular operações no pandas em vez de valores sentinela.

  • Documentação aprimorada para pd.read_excel.

Versão 1.25.0 (13/11/2024)

Novos recursos

  • Adição das seguintes novas funções em snowflake.snowpark.dataframe:

    • map

Melhorias

  • Quando o estágio de destino não é definido no criador de perfil, um estágio padrão de Session.get_session_stage é usado em vez de acionar o SnowparkSQLException.

  • Permitida a inserção de letras minúsculas ou mistas ao chamar Session.stored_procedure_profiler.set_active_profiler.

  • Adição do rastreamento distribuído usando APIs de telemetria aberta para a função de ação em DataFrame:

    • cache_result

  • Removido o aviso de telemetria aberta do registro.

Correções de bugs

  • Correção da propagação de consultas pré-ação e pós-ação quando as expressões In eram usadas em seleções.

  • Correção de um bug que gerava o erro AttributeError ao chamar Session.stored_procedure_profiler.get_output quando Session.stored_procedure_profiler estava desativado.

Atualizações de dependências

  • Adição de uma dependência em protobuf>=5.28 e tzlocal no tempo de execução.

  • Adição de uma dependência em protoc-wheel-0 para o perfil de desenvolvimento.

  • Requer snowflake-connector-python>=3.12.0, <4.0.0 (era >=3.10.0).

Atualizações da Snowpark pandas API

Novos recursos

  • Adição de suporte para Index.to_numpy.

  • Adição de suporte para DataFrame.align e Series.align para axis=0.

  • Adição de suporte para snowflake.snowpark.functions.window

  • Adição de suporte para pd.read_pickle (Usa o pandas nativo para processamento).

  • Adição de suporte para pd.read_html (Usa o pandas nativo para processamento).

  • Adição de suporte para pd.read_xml (Usa o pandas nativo para processamento).

  • Adição de suporte para funções de agregação "size" e len em GroupBy.aggregate, DataFrame.aggregate e Series.aggregate.

  • Adição de suporte para valores de lista em Series.str.len.

Correções de bugs

  • Correção de um bug em que a agregação de um dataframe de coluna única com uma única função passível de ser chamada (por exemplo, pd.DataFrame([0]).agg(np.mean)) não conseguia transpor o resultado.

  • Correção de um bug em que DataFrame.dropna():

    • Tratava um subset vazio (por exemplo, []) como se ele especificasse todas as colunas em vez de nenhuma coluna.

    • Ativava um TypeError para um escalar subset em vez de filtrar apenas essa coluna.

    • Ativava um ValueError para um subset do tipo pandas.Index em vez de filtrar as colunas no índice.

  • Criação de tabelas somente leitura com escopo para atenuar o TableNotFoundError ao usar a articulação dinâmica em um ambiente de notebook.

  • Correção de um bug quando os objetos concatenados de dataframe ou de série são provenientes do mesmo dataframe quando o eixo = 1.

Melhorias

  • Melhorar o np.where com valor x escalar, eliminando a junção desnecessária e a criação de tabelas temporárias.

  • Melhorar o desempenho de get_dummies nivelando a articulação com a junção.

Atualizações de testes locais do Snowpark

Novos recursos

  • Adição de suporte a funções de patch que não estão disponíveis no módulo snowflake.snowpark.functions.

  • Adição de suporte para snowflake.snowpark.functions.any_value

Correções de bugs

  • Correção de um bug em que Table.update não conseguia lidar com os tipos de dados VariantType, MapType e ArrayType.

  • Correção de um bug em que os alias de coluna eram resolvidos incorretamente em DataFrame.join, causando erros ao selecionar colunas de uma junção de DataFrame.

  • Correção de um bug em que Table.update e Table.merge podiam falhar se o índice da tabela de destino não fosse o RangeIndex padrão.

Versão 1.24.0 (28/10/2024)

Novos recursos

  • Atualização da classe Session para ser thread-safe. Isso permite transformações de DataFrame simultâneas, ações de DataFrame, registro de procedimentos armazenados e UDF, bem como uploads de arquivos simultâneos ao usar o mesmo objeto Session.

    • O recurso é desativado por padrão e pode ser ativado ao definir FEATURE_THREAD_SAFE_PYTHON_SESSION como True para a conta.

    • Atualizar as configurações da sessão, como alterar o banco de dados ou o esquema, quando vários threads estão usando a sessão pode levar a um comportamento inesperado.

    • Quando ativados, alguns nomes de tabelas temporárias criados internamente e retornados pela DataFrame.queries API não são determinísticos e podem ser diferentes quando as ações do DataFrame forem executadas. Isso não afeta as tabelas temporárias criadas por usuários explícitos.

  • Adição de suporte para o domínio “Service” à session.lineage.trace API.

  • Adição de suporte para os seguintes métodos em DataFrameWriter para dar suporte à cadeia margarida:

    • option

    • options

    • partition_by

  • Adição de suporte para snowflake_cortex_summarize.

Melhorias

  • Aprimorado o novo recurso a seguir para a função snowflake.snowpark.functions.array_remove para que agora seja possível usá-lo em python.

  • Desativa a simplificação do SQL quando a classificação é realizada após o limite.

    • Anteriormente, df.sort().limit() e df.limit().sort() geravam a mesma consulta com a classificação na frente do limite. Agora, df.limit().sort() gera uma consulta que lê df.limit().sort().

    • Melhorar o desempenho das consultas geradas para df.limit().sort() porque o limite interrompe a varredura da tabela assim que o número de registros é atingido.

Correções de bugs

  • Correção de um bug em que a limpeza automática de tabelas temporárias podia interferir nos resultados da execução de consultas assíncronas.

  • Correção de um bug na função DataFrame.analytics.time_series_agg para lidar com vários pontos de dados no mesmo intervalo deslizante.

  • Correção de um bug que criava uma caixa inconsistente nos nomes de campo de objetos estruturados em esquemas de iceberg.

Preterições

Atualizações da Snowpark pandas API

Novos recursos

  • Adição de suporte para np.subtract, np.multiply, np.divide e np.true_divide.

  • Adição de suporte para rastrear os usos de __array_ufunc__.

  • Adição de suporte de compatibilidade numpy para np.float_power, np.mod, np.remainder, np.greater, np.greater_equal, np.less, np.less_equal, np.not_equal e np.equal.

  • Adição de suporte de compatibilidade numpy para np.log, np.log2, e np.log10

  • Adição de suporte para DataFrameGroupBy.bfill, SeriesGroupBy.bfill, DataFrameGroupBy.ffill e SeriesGroupBy.ffill.

  • Adição de suporte para o parâmetro on com Resampler.

  • Adição de suporte para entradas timedelta em value_counts().

  • Adição de suporte para a aplicação da função Snowpark Python snowflake_cortex_summarize.

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

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

  • Adição de suporte de compatibilidade numpy para np.full_like

Melhorias

  • Aprimoramento da consulta SQL gerada para head e iloc quando a chave da linha é uma fatia.

  • Aprimoramento da mensagem de erro ao passar um fuso horário desconhecido para tz_convert e tz_localize em Series, DataFrame, Series.dt e DatetimeIndex.

  • Aprimoramento da documentação para tz_convert e tz_localize em Series, DataFrame, Series.dt e DatetimeIndex para especificar os formatos de fuso horário compatíveis.

  • Adição de suporte adicional a kwargs para df.apply e series.apply (bem como map e applymap ) ao usar as funções do snowpark. Isso permite alguma compatibilidade independente de posição entre aplicar e funções em que o primeiro argumento não é um objeto pandas.

  • Aprimoramento da consulta SQL gerada para iloc e iat quando a chave da linha é um escalar.

  • Removidas todas as junções em iterrows.

  • Aprimoramento da documentação para Series.map para refletir os recursos sem suporte.

  • Adição de suporte para np.may_share_memory, que é usado internamente por muitas funções do scikit-learn. Esse método sempre retornará falso quando chamado com um objeto pandas do Snowpark.

Correções de bugs

  • Correção de um bug em que DataFrame e Series pct_change() geravam TypeError quando a entrada continha colunas de timedelta.

  • Correção de um bug em que replace() às vezes propagava incorretamente os tipos Timedelta usando replace(). Em vez disso, acione NotImplementedError para replace() em Timedelta.

  • Correção de um bug em que DataFrame e Series round() acionavam AssertionError para colunas Timedelta. Em vez disso, acione NotImplementedError para round() em Timedelta.

  • Correção de um bug em que reindex falhava quando o novo índice era uma série com tipos não sobrepostos do índice original.

  • Correção de um bug em que chamar __getitem__ em um objeto DataFrameGroupBy sempre retornava um objeto DataFrameGroupBy se as_index=False.

  • Correção de um bug em que a inserção de valores de timedelta em uma coluna existente convertia silenciosamente os valores em números inteiros em vez de acionar NotImplementedError.

  • Correção de um bug em que DataFrame.shift() no eixo=0 e no eixo=1 não propagava os tipos de timedelta.

  • DataFrame.abs(), DataFrame.__neg__(), DataFrame.stack() e DataFrame.unstack() agora acionam NotImplementedError para entradas de timedelta em vez de não propagar tipos de timedelta.

Atualizações de testes locais do Snowpark

Correções de bugs

  • Correção de um bug em que DataFrame.alias aciona KeyError para o nome da coluna de entrada.

  • Correção de um bug em que to_csv no estágio Snowflake falhava quando os dados continham cadeias de caracteres vazias.

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 para QueryRecord 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 sem len() 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 em axis=0 com agg ou aggregate.

  • Adição de suporte para by, left_by, right_by, left_index e right_index para pd.merge_asof.

  • Adição de suporte para passagem do parâmetro include_describe para Session.query_history.

  • Adição de suporte aos métodos DatetimeIndex.mean e DatetimeIndex.std.

  • Adição de suporte para Resampler.asfreq, Resampler.indices, Resampler.nunique e Resampler.quantile.

  • Adição de suporte para as frequência de resample W, ME e YE com closed = "left".

  • Adição de suporte para DataFrame.rolling.corr e Series.rolling.corr para pairwise = False e window do tipo inteiro.

  • Adição de suporte para as cadeias de caracteres baseadas em tempo window e min_periods = None para Rolling.

  • Adicionado suporte para DataFrameGroupBy.fillna e SeriesGroupBy.fillna.

  • Adição de suporte para construir de objetos Series e DataFrame com o objeto Index ocioso como os argumentos data, index e columns.

  • Adição de suporte para construir os objetos Series e DataFrame com os valores index e column não presentes em DataFrame/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() e expanding().count() para as séries e colunas Timedelta.

  • Adição de suporte para tz em pd.date_range e pd.bdate_range.

  • Adição de suporte para Series.items.

  • Adição de suporte para errors="ignore" em pd.to_datetime.

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

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

  • Adição de suporte para aplicação de funções Python do Snowpark (por exemplo, sin) em Series.map, Series.apply, DataFrame.apply e DataFrame.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 em Series.apply.

Correções de bugs

  • Correção de um bug em que um objeto Index criado a partir de um Series/DataFrame atualizava incorretamente o nome do índice do Series/DataFrame após uma atualização local ter sido aplicada ao Series/DataFrame original.

  • Correção de um SettingWithCopyWarning que às vezes aparecia ao imprimir colunas Timedelta.

  • Correção do argumento inplace para objetos Series derivados de outros objetos Series.

  • 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 entradas Timedelta como Timedelta 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ção use_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 configurar PARSE_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âmetro outer.

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 uso Timedelta sem suporte.

    • suporte para rastrear o tipo Timedelta através de copy, 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 e to_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 a Timedelta.

    • 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 e aggregate.

    • Suporte a filtragens GroupBy first e last.

    • Suporte aos atributos TimedeltaIndex: days, seconds, microseconds e nanoseconds.

    • Suporte para diff com colunas de carimbo de data/hora em axis=0 e axis=1.

    • Suporte aos métodos TimedeltaIndex: ceil, floor e round.

    • 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 e Index.set_names.

  • Adição de suporte para Index.__repr__.

  • Adicionado suporte para DatetimeIndex.month_name e DatetimeIndex.day_name.

  • Adição de suporte para Series.dt.weekday, Series.dt.time e DatetimeIndex.time.

  • Adicionado suporte para Index.min e Index.max.

  • Adição de suporte para pd.merge_asof.

  • Adicionado suporte para Series.dt.normalize e DatetimeIndex.normalize.

  • Adição de suporte para Index.is_boolean, Index.is_integer, Index.is_floating, Index.is_numeric e Index.is_object.

  • Adição de suporte para DatetimeIndex.round, DatetimeIndex.floor e DatetimeIndex.ceil.

  • Adicionado suporte para Series.dt.days_in_month e Series.dt.daysinmonth.

  • Adicionado suporte para DataFrameGroupBy.value_counts e SeriesGroupBy.value_counts.

  • Adicionado suporte para Series.is_monotonic_increasing e Series.is_monotonic_decreasing.

  • Adicionado suporte para Index.is_monotonic_increasing e Index.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) para pd.date_range e pd.bdate_range.

  • Adição de suporte para objetos Index lentos como labels em DataFrame.reindex e Series.reindex.

  • Adição de suporte para Series.dt.days, Series.dt.seconds, Series.dt.microseconds e Series.dt.nanoseconds.

  • Adição de suporte para criar um DatetimeIndex a partir de um Index 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 definir DataFrame.index ou Series.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 de Series ou DataFrame, um ValueError não é mais gerado. Em vez disso, quando o objeto Series ou DataFrame é maior que o índice fornecido, o novo índice do Series ou DataFrame é preenchido com valores NaN 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 e DataFrame.reindex não atualizava o nome do índice de resultados corretamente.

  • Correção de um bug em que Series.take não dava erro quando axis=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 para DataFrameReader via INFER_SCHEMA_OPTIONS.

  • Adição de suporte para passagem de parâmetro parameters para Column.rlike e Column.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 configurando session.auto_clean_up_temp_table_enabled para True.

  • Adição de suporte para literais de cadeia de caracteres ao parâmetro fmt de snowflake.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 e regexp acima.

Correções de bugs

  • Correção de um bug em que a as funções de janela LEAD e LAG não manipulavam a opção ignore_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 e Series.bfill.

  • Adição de suporte para DataFrame.compare e Series.compare com parâmetros padrão.

  • Adicionado suporte para Series.dt.microsecond e Series.dt.nanosecond.

  • Adicionado suporte para Index.is_unique e Index.has_duplicates.

  • Adição de suporte para Index.equals.

  • Adição de suporte para Index.value_counts.

  • Adicionado suporte para Series.dt.day_name e Series.dt.month_name.

  • Adição de suporte para inclusão no Index, por exemplo, df.index[:10].

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

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

  • Adicionado suporte para Series.dt.is_month_start e Series.dt.is_month_end.

  • Adicionado suporte para Index.all e Index.any.

  • Adicionado suporte para Series.dt.is_year_start e Series.dt.is_year_end.

  • Adicionado suporte para Series.dt.is_quarter_start e Series.dt.is_quarter_end.

  • Adição de suporte para DatetimeIndex lento.

  • Adicionado suporte para Series.argmax e Series.argmin.

  • Adição de suporte para Series.dt.is_leap_year.

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

  • Adicionado suporte para Series.dt.floor e Series.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 e is_leap_year.

  • Adicionado suporte para Resampler.fillna e Resampler.bfill.

  • Adição de suporte limitado para o tipo Timedelta, incluindo a criação de colunas Timedelta e to_pandas.

  • Adicionado suporte para Index.argmax e Index.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 construtor Index para criar Index a partir do compilador de consulta.

  • pd.to_datetime agora retorna um objeto DatetimeIndex em vez de um objeto Series.

  • pd.date_range agora retorna um objeto DatetimeIndex em vez de um objeto Series.

Correções de bugs

  • Agora, passar uma função de agregação sem suporte para pivot_table gera NotImplementedError em vez de KeyError.

  • 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 em Series.drop_duplicates e DataFrame.drop_duplicates quando chamado depois de sort_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 configurando session.eliminate_numeric_sql_value_cast_enabled = True.

  • Mensagens de erro aprimoradas para write_pandas quando a tabela de destino não existe e auto_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ção Session.SessionBuilder.app_name que define o nome do aplicativo em Session.query_tag no formato JSON. Por padrão, este parâmetro é definido como False.

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 erro argument 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 o pandas.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étodo DataFrameWriter.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 em BinaryExpressions.

Atualizações da Snowpark pandas API

Novos recursos

  • Adição de novo suporte de API para o seguinte:

    • DataFrames

      • DataFrame.nlargest e DataFrame.nsmallest

      • DataFrame.assign

      • DataFrame.stack

      • DataFrame.pivot

      • DataFrame.to_csv

      • DataFrame.corr

      • DataFrame.corr

      • DataFrame.equals

      • DataFrame.reindex

      • DataFrame.at e DataFrame.iat

    • Series

      • Series.nlargest e Series.nsmallest

      • Series.at e Series.iat

      • Series.dt.isocalendar

      • Series.equals

      • Series.reindex

      • Series.to_csv

      • Series.case_when exceto quando a condição ou substituição for exigível

      • series.plot() materializou os dados para o cliente local

    • GroupBy

      • DataFrameGroupBy.all e DataFrameGroupBy.any

      • As agregações DataFrameGroupBy e SeriesGroupBy, e first e last.

      • DataFrameGroupBy.get_group

      • SeriesGroupBy.all e SeriesGroupBy.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 e frac > 1 em DataFrame.sample e Series.sample.

    • Adição de suporte parcial para Series.str.translate onde os valores em table são cadeias de caracteres de ponto de código único.

    • Adição de suporte ao parâmetro limit quando o parâmetro method é usado em fillna.

  • 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 ou Series com dtype=np.uint64.

  • Correção de um bug onde values é definido como index quando index e columns contêm todas as colunas no DataFrame durante pivot_table.

Melhorias

  • Adição de suporte para Index.copy().

  • Adição de suporte para Index APIs: dtype, values, item(), tolist(), to_series() e to_frame().

  • Expanda o suporte para DataFrames sem linhas em pd.pivot_table e DataFrame.pivot_table.

  • Adição de suporte ao parâmetro inplace em DataFrame.sort_index e Series.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âmetro source_timezone retornasse um erro.

  • Correção de um bug onde a criação de um DataFrame com dados vazios do tipo DateType gerava AttributeError.

  • 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 gerava IndexError 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 gerava IndexError 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 gerava IndexError 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 simulada iff.

Atualizações da Snowpark pandas API

Novos recursos

  • Adição de suporte parcial para DataFrame.pct_change e Series.pct_change sem os parâmetros freq e limit.

  • Adição de suporte para Series.str.get.

  • Adição de suporte para Series.dt.dayofweek, Series.dt.day_of_week, Series.dt.dayofyear e Series.dt.day_of_year.

  • Adição de suporte para Series.str.__getitem__ (Series.str[…]).

  • Adição de suporte para Series.str.lstrip e Series.str.rstrip.

  • Adição de suporte para DataFrameGroupby.size e SeriesGroupby.size.

  • Adição de suporte para DataFrame.expanding e Series.expanding para as agregações count, sum, min, max, mean, std e var com axis=0.

  • Adição de suporte para DataFrame.rolling e Series.rolling para contagem de agregação com axis=0.

  • Adição de suporte para Series.str.match.

  • Adição de suporte para DataFrame.resample e Series.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 diferentes dtypes podia causar um erro ou resultados incorretos.

  • Correção de um bug em DataFrame.rolling e Series.rolling, para que agora window=0 lance NotImplementedError em vez de ValueError.

Melhorias

  • Adição de suporte para agregações nomeadas em DataFrame.aggregate e Series.aggregate com axis=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 com read_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 para pd.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() e names. Para df.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 um Index 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 e Series.cache_result para os usuários persistirem objetos DataFrame e Series 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âmetro index e com o parâmetro margins.

  • Atualizou a assinatura de DataFrame.shift, Series.shift, DataFrameGroupBy.shift e SeriesGroupBy.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 e DataFrame.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 e struct.

  • 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 dados None.

  • 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 pai DataFrames 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 um DataFrame de um DataFrame 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 pai DataFrames 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 e anonymous 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 e VariantType na função simulada to_timestamp_ltz, to_timestamp_ntz, to_timestamp_tz e to_timestamp.

  • Adicionado suporte para conversão de dados DecimalType, BinaryType, ArrayType, MapType, TimestampType, DateType e TimeType na função simulada to_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 e substring não pode lidar com uma base zero start_expr.

Melhorias

  • Padronizou a experiência de erro aumentando SnowparkLocalTestingException em casos de erro, o que está no mesmo nível do SnowparkSQLException levantado em execução não local.

  • Experiência de erro melhorada do método Session.write_pandas, de maneira que NotImplementError 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 e VariantType conversão de dados na função simulada to_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 e NaN 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 permanecer None em vez de math.nan.

  • Corrigido um bug na função sum e covar_pop que quando há um math.nan valor nos dados, a saída também deve ser math.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 como int64.

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 em DataFrameWrite 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 e DataFrameWriter:

    • snowflake.snowpark.DataFrame:

      • collect

      • collect_nowait

      • to_pandas

      • count

      • show

    • snowflake.snowpark.DataFrameWriter:

      • save_as_table

  • Adicionado suporte para snow:// URLs para snowflake.snowpark.Session.file.get e snowflake.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 como True.

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 aumentar AttributeError 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 e VariantType conversão de dados na função simulada to_time.

Correções de bugs

  • Corrigido um bug que preenchia colunas com valores nulos para funções constantes.

  • Corrigidos to_object, to_array e to_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 erro FileNotFound 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 onde save_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 opcional field_optionally_enclosed_by é especificado.

    • Column.regexp considera apenas a primeira entrada quando pattern é um Column.

    • Table.update gera KeyError 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ção last_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ão to_pandas, para alocação de memória ideal. Este parâmetro é passado para pyarrow.Table.to_pandas, o que permite que PyArrow 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 coluna IntergerType 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 como int8 é retornada como int64. 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 de Session.call não acionaria um procedimento armazenado, a menos que uma operação collect() fosse executada.

  • StoredProcedureRegistration agora adiciona automaticamente snowflake-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 em StoredProcedure.__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 e secrets 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 em DataFrame.analytics para permitir agregações móveis, como somas e médias com vários tamanhos de janela.

    • Adicionada a função cummulative_agg em DataFrame.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 como TimestampType(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 como TimestampType(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 em pandas. 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 de DataFrame.sort().limit().

    • DataFrame.sort() ou filter() é 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.
    
    Copy
  • 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 com limit().

  • Corrigido um bug que gerava uma exceção quando o parâmetro de sessão ERROR_ON_NONDETERMINISTIC_UPDATE era verdadeiro.