Biblioteca Snowpark Checkpoints: validadores¶
O pacote Snowpark Checkpoints oferece um conjunto de validações que podem ser aplicadas ao código Snowpark para garantir a equivalência comportamental com o código PySpark.
Funções fornecidas pelo framework¶
check_with_spark: um decorador que converterá qualquer argumento do Snowpark DataFrame em uma função ou amostra e, em seguida, em PySpark DataFrames. Em seguida, a verificação executará uma função spark fornecida que espelha a funcionalidade da nova função Snowpark e compara os resultados entre as duas implementações. Supondo que a função do Spark e as funções do Snowpark sejam semanticamente idênticas, este decorador verifica essas funções em dados reais e amostrados.
- Parâmetros:
job_context(SnowparkJobContext): o contexto do trabalho que contém a configuração e os detalhes da validação.spark_function(fn): a função PySpark equivalente para comparar com a implementação do Snowpark.checkpoint_name(str): um nome para o ponto de verificação; o padrão é Nenhumsample_number(Optional[int], opcional): o número de linhas para validação; o padrão é 100sampling_strategy(Opcional[SamplingStrategy], opcional): a estratégia utilizada para a amostragem de dados; o padrão éSamplingStrategy.RANDOM_SAMPLEoutput_path(Optional[str], opcional): o caminho para o arquivo onde os resultados da validação são armazenados; o padrão é Nenhum
Exemplo:
validate_dataframe_checkpoint: essa função valida um Snowpark Dataframe em relação a um arquivo de esquema de ponto de verificação específico ou a um Dataframe importado de acordo com o modo de argumento. Isso garante que as informações coletadas para esse DataFrame e o DataFrame que é passado para a função sejam equivalentes.
- Parâmetros:
df(SnowparkDataFrame): o DataFrame a ser validadocheckpoint_name(str): o nome do ponto de verificação para validação.job_context(SnowparkJobContext, opcional) (str): o contexto do trabalho para a validação; necessário para o modo PARQUETmode(CheckpointMode): o modo de validação (por exemplo, SCHEMA, PARQUET); o padrão é SCHEMAcustom_checks(Optional[dict[Any, Any]], opcional): verificações personalizadas a serem aplicadas durante a validação.skip_checks(Optional[dict[Any, Any]], opcional): verificações a serem ignoradas durante a validação.sample_frac(Opcional[float], opcional): fração do DataFrame para amostragem para validação; o padrão é 0,1sample_number(Optional[int], opcional): número de linhas a serem amostradas para validação.sampling_strategy(Optional[SamplingStrategy], opcional): estratégia a ser usada para amostragem.output_path(Optional[str], opcional): o caminho para o arquivo onde os resultados da validação são armazenados
Exemplo:
Dependendo do modo selecionado, a validação usará o arquivo de esquema coletado ou um Dataframe carregado com Parquet no Snowflake para verificar a equivalência com a versão PySpark.
check-output_schema: esse decorador valida o esquema de saída de uma função do Snowpark e garante que a saída DataFrame esteja em conformidade com um esquema Pandera especificado. Ele é especialmente útil para reforçar a integridade e a consistência dos dados nos pipelines do Snowpark. Esse decorador recebe vários parâmetros, inclusive o esquema Pandera para validação, o nome do ponto de verificação, parâmetros de amostragem e um contexto de trabalho opcional. Ele envolve a função Snowpark e executa a validação do esquema na saída. DataFrame antes de retornar o resultado.
Exemplo:
check_input_schema: esse decorador valida o esquema dos argumentos de entrada de uma função do Snowpark. Esse decorador garante que a entrada DataFrame esteja em conformidade com um esquema Pandera especificado antes de a função ser executada. Ele é especialmente útil para reforçar a integridade e a consistência dos dados nos pipelines do Snowpark. Esse decorador recebe vários parâmetros, inclusive o esquema Pandera para validação, o nome do ponto de verificação, parâmetros de amostragem e um contexto de trabalho opcional. Ele envolve a função Snowpark e realiza a validação do esquema na entrada. DataFrame antes de executar a função.
Exemplo:
Verificações de estatísticas¶
As validações de estatísticas são aplicadas ao tipo de coluna específico por padrão quando a validação é executada no modo Schema; essas verificações podem ser ignoradas com skip_checks.
Tipo de coluna |
Verificação padrão |
|---|---|
Numérico: |
between: se o valor estiver entre o mínimo ou o máximo, incluindo o mínimo e o máximo. decimal_precision: se o valor for decimal, isso verificará a precisão decimal. mean: validar se a média das colunas está dentro de um intervalo específico. |
Booliano |
é em: validar se o valor é True (verdadeiro) ou False (falso). True_proportion: validar se a proporção dos valores True está dentro de um intervalo específico. False_proportion: validar se a proporção dos valores False está dentro de um intervalo específico. |
Data: |
between: se o valor estiver entre o mínimo ou o máximo, incluindo o mínimo e o máximo. |
Anulável: todos os tipos suportados |
Null_proportion: validar a proporção nula adequadamente. |
Ignorar verificações¶
Com este controle granular para verificações, você pode ignorar a validação da coluna ou verificações específicas para uma coluna. Com o parâmetro skip_checks, você pode especificar a coluna específica e o tipo de validação que deseja ignorar. O nome da verificação usada para ignorar é aquele associado à verificação.
str_containsstr_endswithstr_lengthstr_matchesstr_startswithin_rangeequal_togreater_than_or_equal_togreater_thanless_than_or_equal_toless_thannot_equal_tonotinisin
Exemplo:
Verificações personalizadas¶
Você pode adicionar verificações adicionais ao esquema gerado a partir do arquivo JSON com a propriedade custom_checks. Isso adiciona a verificação ao esquema pandera.
Exemplo:
Estratégias de amostragem¶
O processo de amostragem do código fornecido foi projetado para validar com eficiência grandes DataFrames, coletando uma amostra representativa dos dados. Essa abordagem ajuda a realizar a validação do esquema sem a necessidade de processar todo o conjunto de dados, o que pode ser computacionalmente caro e demorado.
- Parâmetros:
sample_frac: esse parâmetro especifica a fração do DataFrame a ser amostrada. Por exemplo, sesample_fracfor definido como 0,1, então 10% das linhas de DataFrame serão amostradas. Isso é útil quando você deseja validar um subconjunto dos dados para economizar recursos computacionais.sample_number: ssse parâmetro especifica o número exato de linhas para amostragem no DataFrame. Por exemplo, sesample_numberfor definido como 100, então 100 linhas serão amostradas a partir de DataFrame. Isso é útil quando você deseja validar um número fixo de linhas, independentemente do tamanho do DataFrame.
Resultado da validação¶
Depois que qualquer tipo de validação for executado, o resultado, seja ele aprovado ou reprovado, será salvo em checkpoint_validation_results.json. Esse arquivo é usado principalmente para as funcionalidades da extensão VSCode. Ele conterá informações sobre o status da validação, o carimbo de data/hora, o nome do ponto de verificação, o número da linha em que ocorre a execução da função e o arquivo.
Ele também registrará o resultado na conta padrão do Snowflake em uma tabela chamada SNOWPARK_CHECKPOINTS_REPORT, que conterá informações sobre o resultado da validação.
DATE: carimbo de data/hora da execução da validaçãoJOB: nome do SnowparkJobContextSTATUS: status da validaçãoCHECKPOINT: nome do ponto de verificação validadoMESSAGE: mensagem de erroDATA: dados da execução da validaçãoEXECUTION_MODE: modo de validação executado