-
Notifications
You must be signed in to change notification settings - Fork 12
Metadados
Neste tutorial vamos mostrar como criar um novo campo de metadado no Ckan. Para o exemplo, criaremos um novo campo chamado n_rows onde teremos o número total de linhas da tabela. A criação de um novo campo de metadado consiste nos seguintes passos:
- Edição dos metadados
- Migração
Antes de iniciar a edição dos metadados para incluir o campo desejado é preciso buildar o site localmente. Para instruções de como buildar o site localmente, veja o README do repositório principal.
Com o site rodando localmente, podemos iniciar a edição dos metadados. Como vamos adicionar um campo que se relaciona com as tabelas, precisamos editar o items do campo resources em bdm_table. Para isso, abra o arquivo ckanext-basedosdados/ckanext/basedosdados/validator/resources/bdm/table/__init__.py e adicione o campo desejado:
. . . class BdmTable(_CkanDefaultResource): # fmt: off resource_type: Literal["bdm_table"] dataset_id : Str = DATASET_ID_FIELD table_id : Str = TABLE_ID_FIELD . . . title : Optional[Str] = TITLE_FIELD n_rows : Optional[int] = N_ROWS_FIELD
Note que explicitamos que o campo que estamos criando é do tipo int.
Após a edição do arquivo __init__.py, devemos agora editar o arquivo fields_definitions.py que encontra-se na mesma pasta. Neste arquivo precisamos apenas criar um novo Field, a exemplo do que já foi feito para os demais campos. Para nosso caso, temos:
N_ROWS_FIELD = Field( title="Número de Linhas da Tabela", yaml_order={ "id_before": "columns", "id_after": "metadata_modified", }, )
Após a edição dos metadados, precisamos realizar a migração do novo campo para que todas as tabelas tenha essa informação em seus metadados. É possível realizar migração usando python ou SQL. Para este exemplo, vamos mostrar como realizar essa migração usado python.
A forma mais prática de implementar a migração usando python é usar como template um notebook usado em outra migração. Estes notebooks podem ser encontrados na pasta utils/migration