Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

Problema ao contar valores nulos na tabela socios

Transformei meus dados assim:

socios = socios\
    .withColumn(
        "data_de_entrada_sociedade", 
        f.to_date(socios.data_de_entrada_sociedade.cast(StringType()), 'yyyyMMdd')
    )

Seleciono os 5 samples:

partners.select("nome_do_socio_ou_razao_social", "faixa_etaria", f.year("data_de_entrada_sociedade").alias("ano_de_entrada")).show(5, truncate=False)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ao tentar selecionar null values, com código:


partners.select([f.count(f.when(f.isnull(c), 1)).alias(c) for c in partners.columns]).show()

Recebo este erro:

DateTimeException: [CANNOT_PARSE_TIMESTAMP] Text '4100813' could not be parsed at index 6. Use try_to_date to tolerate invalid input string and return NULL instead. SQLSTATE: 22007

Quando essas situações ocorrem, como eu posso fazer o troubleshoot do problema? A mensagem não me tras clareza.

1 resposta

Oi Alini, tudo bem?

Não encontrei esse código:

partners.select(
    "nome_do_socio_ou_razao_social", 
    "faixa_etaria", 
    f.year("data_de_entrada_sociedade").alias("ano_de_entrada")
).show(5, truncate=False)

no notebook do instrutor. Acredito que esteja implementando algo por fora, certo? Caso o instrutor tenha executado esse comando em alguma aula, por favor, compartilhe o link aqui para conferirmos.

Sobre o erro: ele indica que existe um valor na coluna data_de_entrada_sociedade que não está no formato esperado para a conversão de data ('yyyyMMdd').

Você pode identificar esses valores filtrando os que não têm exatamente 8 dígitos numéricos:

socios.filter(~f.col("data_de_entrada_sociedade").rlike("^\d{8}$")).show()

Além disso, a própria mensagem sugere usar try_to_date, que converte valores inválidos para NULL em vez de lançar erro. Você pode testar algo assim:

socios = socios.withColumn(
    "data_de_entrada_sociedade", 
    f.expr("try_to_date(data_de_entrada_sociedade, 'yyyyMMdd')")
)

Dessa forma, você consegue seguir com a análise e ao mesmo tempo identificar quais registros não estão no formato adequado.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!