1
resposta

Erro TypeError: FlatMap() missing 1 required positional argument: 'fn' ao inserir o flatMap no pipeline

Erro para inserir o flatmap no pipeline.

def casos_dengue(elemento): 
    """
    Recebe uma tupla ('RS', [{}, {}])
    Retornar uma tupla com o Estado, o ano e o elemento(casos)
    """
    uf, registros = elemento 
    for registro in registros:
        yield (f"{uf}-{registro['ano_mes']}", registro['casos'])
dengue = (
    pipeline #cada pipe "|" é uma função do pipeline
    | "Leitura do dataset de dengue" >> ReadFromText('Bases/casos_dengue.txt', skip_header_lines=1)
    | "De texto para lista" >> beam.Map(texto_para_lista)
    | "De lista para dicionário" >> beam.Map(lista_para_dicionario, colunas_dengue)
    | "Criar campo ano_mes" >> beam.Map(trata_datas)
    | "Criar chave pelo estado" >> beam.Map(chave_uf) # Aqui vai virar uma tupla.
    | "Agrupar pelo estado" >> beam.GroupByKey() # Retonará uma lista de dicionários agrupado pela UF
    | "Descompactar casos de dengue" >> beam.FlatMap() #
    | "Mostrar Resultados" >> beam.Map(print)
)

Alguém sabe qual o problema?

1 resposta

Oii, Paola!

No beam.FlatMap() você deixou o método como se fosse vazio, ali tem apenas o # pro comentário, sendo que na realidade, o que vai ser passado como argumento ali dentro é o (casos_dengue). Inclusive você definiu no código anterior a ele.

Basta colocar desta forma:

 | "Descompactar casos de dengue" >> beam.FlatMap(casos_dengue)

(E se você quiser adicionar um comentário, fique à vontade também :)

Se outra dúvida surgir, pode postar aqui no fórum.

Abraços!

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