-
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_FIELDNote 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