splor-mg / dados-aux-classificadores

0 stars 0 forks source link

Chaves link table #27

Closed labanca closed 2 months ago

labanca commented 2 months ago

Closes https://github.com/splor-mg/dados-aux-classificadores/issues/25

labanca commented 2 months ago

Não olhei o código mas a validação não está passando:

frictionless validate datapackage.json
─────────────────────────────────── Dataset ────────────────────────────────────
                                   dataset                                    
┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓
┃ name                   ┃ type  ┃ path                            ┃ status  ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩
│ acao                   │ table │ data/acao.csv                   │ INVALID │
│ elemento_item          │ table │ data/elemento_item.csv          │ INVALID │
│ fonte_recurso          │ table │ data/fonte_recurso.csv          │ INVALID │
│ funcional_programatica │ table │ data/funcional_programatica.csv │ INVALID │
│ natureza_receita       │ table │ data/natureza_receita.csv       │ INVALID │
│ uo                     │ table │ data/uo.csv                     │ INVALID │
└────────────────────────┴───────┴─────────────────────────────────┴─────────┘

A princípio a ordem dos fields da pasta schemas estavam erradas. Mas a validação ainda estava falhando.

No transform eu estava mudando a ordem das colunas para que chave_* fossem sempre a primeira coluna de cada tabela:

table = etl.cut(table, f'chave_{resource.name}',  *[field for field in table.header() if field != f'chave_{resource.name}'])

Parece que a coluna chave ser a primeira da tabeça e ter o delimitador | fazia com que resource.infer(stats=True) inferisse o delimitador errado csv em tabelas pequenas. Ao remover essa linha que fazia a reordenação o datapackage.json passou na validação normalmente.

labanca commented 2 months ago

@fjuniorr

fjuniorr commented 2 months ago

@hslinhares fizemos merge deste PR adicionando colunas chave_* nos recursos do conjunto dados-aux-classificadores.

Dá uma olhada se no relatório operacional isso vai quebrar alguma coisa