Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como exibir data-mês na saida

Eu estou tendo dificuldades em encontrar na documentação da API(spark) as funções e syntax para implentar em meus exercícios.

Eu gostaria de implementar no coluna de data na saida do banco o seguinte formato yyyyMM (2022-06). como faço?

Tentei desta forma:

estabelecimentos\
    .select('nome_fantasia', 'nome_da_cidade_no_exterior',\
            f.year('data_de_inicio_atividade').alias('ano_mes_do_inicio_das_atividades'), f.month('data_de_inicio_atividade').alias('ano_mes_do_inicio_das_atividades'))\
            .show(5, False)

Saida:

+-----------------+--------------------------+--------------------------------+--------------------------------+
|nome_fantasia    |nome_da_cidade_no_exterior|ano_mes_do_inicio_das_atividades|ano_mes_do_inicio_das_atividades|
+-----------------+--------------------------+--------------------------------+--------------------------------+
|PIRAMIDE M. C.   |null                      |1994                            |5                               |
|null             |null                      |1994                            |5                               |
|null             |null                      |1994                            |5                               |
|null             |null                      |1994                            |5                               |
|EMBROIDERY & GIFT|null                      |1995                            |5                               |
+-----------------+--------------------------+--------------------------------+--------------------------------+
only showing top 5 rows
2 respostas
solução!

Olá, Claucio! Tudo bem com você?

Para fazer isso adotamos dois passos, supondo que não fizemos nenhum tratamento nas variáveis, como por exemplo conversão do tipo.

estabelecimentos\
    .select('nome_fantasia', 'data_de_inicio_atividade')\
    .withColumn(
        "ano-mes",
        f.date_format(
            f.to_date(estabelecimentos.data_de_inicio_atividade.cast(StringType()), 'yyyyMMdd'), 'yyyy-MM'
        )
    ).show(5)

Saída:

+--------------------+------------------------+-------+
|       nome_fantasia|data_de_inicio_atividade|ano-mes|
+--------------------+------------------------+-------+
|                null|                19940816|1994-08|
|                null|                19940506|1994-05|
|CARTORIO FELIX DE...|                19811130|1981-11|
|            QUIOSQUE|                19940517|1994-05|
|                BADU|                19940519|1994-05|
+--------------------+------------------------+-------+
only showing top 5 rows

Primeiro passo é realizar a conversão da coluna data_de_inicio_atividade para o tipo de data, que fizemos com o seguinte trecho de código:

f.to_date(estabelecimentos.data_de_inicio_atividade.cast(StringType()), 'yyyyMMdd')

Semelhante ao que o instrutor demonstrou em aula.

Após isso podemos fazer a conversão para o formato que queremos, que no caso é yyyy-MM e fazemos isso com o método date_format.

Qualquer dúvida estou à disposição. Bons estudos.

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

Obrigado.