Skip to content

Metadados

lucascr91 edited this page Jul 22, 2022 · 2 revisions

Metadados

Criação de novo campo para 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:

  1. Edição dos metadados
  2. Migração

Edição dos metadados

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",
    },
)

Migração

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

Clone this wiki locally