# Recomendações para ficheiros CSV

De seguida são descritas todas as recomendações a ter em conta ao formatar ficheiros [CSV](https://mosaico.gov.pt/glossario#glossario-csv). Para recomendações sobre outros formatos, como [XML](https://mosaico.gov.pt/glossario#glossario-xml-extensible-markup-language), RDF ou JSON consultar o guia [Data Quality Guidelines](https://op.europa.eu/en/publication-detail/-/publication/023ce8e4-50c8-11ec-91ac-01aa75ed71a1).

## Usar o ponto e vírgula como delimitador

Usar o ponto e vírgula para separar cada valor em vez da vírgula, evitando que esta seja interpretada como um delimitador, uma vez que os pontos e vírgula são utilizados com menor frequência em valores. O delimitador deve ficar sempre entre dois valores e não podem existir espaços ou tabulações antes ou depois.

De seguida é ilustrado um exemplo incorreto, onde duas linhas têm uma tabulação a seguir ao delimitador e onde todas as células têm o último valor seguido por um ponto e vírgula, e outro exemplo correto, onde não existe qualquer espaço ou tabulação antes ou depois do delimitador e o último valor de cada linha não é seguido por um delimitador.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FJOTNIPG6kOMRXOx0vciG%2FRight-6.png?alt=media&#x26;token=060f9019-aa59-44b6-8ba6-c180c4c1ef9d" alt=""><figcaption><p>Exemplo incorreto, à esquerda, e correto, à direita, da utilização do ponto e vírgula como delimitador</p></figcaption></figure>

## Disponibilizar uma tabela por ficheiro

Cada ficheiro CSV só pode conter uma tabela. Se a tabela a publicar for composta por várias folhas, deve ser criado um ficheiro CSV para cada uma, uma vez que uma organização diferente quebraria a estrutura da tabela e iria dificultar a sua interpretação por meios automáticos.

De seguida é ilustrado um exemplo incorreto onde foram incluídas duas tabelas distintas no mesmo ficheiro, e outro correto, onde foram disponibilizados dois ficheiros, cada um contendo uma tabela com uma estrutura distinta.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FtRGCAwrBuxxVzsegLdiG%2FRight-7.png?alt=media&#x26;token=a0e0f37d-ac98-4dcd-9a29-446da1a8ddf4" alt=""><figcaption><p>Exemplo incorreto, à esquerda, e correto, à direita, de disponibilização de apenas uma tabela por ficheiro</p></figcaption></figure>

## Evitar inserir espaços em branco e informação adicional no ficheiro

Garantir que o ficheiro contém apenas dados que pertencem à tabela em si, como os cabeçalhos das colunas e os respetivos valores, uma vez que a inclusão de informação adicional dificulta o processamento porque os espaços em branco e títulos das tabelas também são interpretados automaticamente.

De seguida é ilustrado um exemplo incorreto de um ficheiro que contém o título de tabela e duas linhas vazias (vermelho), quando visualizado no Microsoft Excel.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FuSJ9t857936CKrb2pQT3%2FCard%20Extra%20Info-21.png?alt=media&#x26;token=4eb56ab8-e293-4ade-baca-826dd877b56b" alt=""><figcaption><p>Exemplo incorreto, onde foram inseridas células em branco e informação adicional, quando visualizado no Microsoft Excel</p></figcaption></figure>

Na figura que se segue, é ilustrado como o mesmo ficheiro foi lido por um editor de texto, onde a linha do título da tabela e as linhas vazias (vermelho) foram interpretadas.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FqqUZAAMx6wAMfCLMl2SS%2FCard%20Extra%20Info-23.png?alt=media&#x26;token=1a038623-369f-414d-94da-435ceb57a99d" alt=""><figcaption><p>Exemplo incorreto, onde foram inseridas células em branco e informação adicional, quando interpretado por um editor de texto</p></figcaption></figure>

O exemplo incorreto que se segue ilustra um ficheiro com informações e formatações adicionais, identificadas com caixas de texto, que irão dificultar o processamento automático dos dados.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FdetoCtx5SDGJ5fIQoBVJ%2FCard%20Extra%20Info-17.png?alt=media&#x26;token=ce3d29b7-18c7-4b96-9344-7ef52f3a9e64" alt=""><figcaption><p>Exemplo incorreto de um ficheiro com informações e formatações adicionais, identificadas com caixas de texto</p></figcaption></figure>

No exemplo correto que se segue é ilustrada uma versão do ficheiro com os mesmos dados onde todas as informações adicionais foram removidas e o título da tabela foi incluído no nome do ficheiro.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FgeWhYlBnHoT6YFLCt09D%2FCard%20Extra%20Info-18.png?alt=media&#x26;token=4402b082-ba92-4c88-962d-2c6cbfdb1558" alt=""><figcaption><p>Exemplo correto de um ficheiro sem informações ou formatações adicionais</p></figcaption></figure>

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FUmGISH6GrqSh2AaKhH2M%2FCard%20Extra%20Info-24.png?alt=media&#x26;token=9e15a313-e700-478d-9856-826ea54efb47" alt=""><figcaption><p>Exemplo correto de um ficheiro onde o título da tabela foi incluído no nome do ficheiro e retirado da tabela</p></figcaption></figure>

## Inserir cabeçalhos nas colunas

Incluir sempre cabeçalhos das colunas na primeira linha do ficheiro. Os cabeçalhos devem ser, preferencialmente, autoexplicativos, mas caso não sejam, a sua explicação deve ser incluída nos [metadados](https://mosaico.gov.pt/glossario#glossario-metadados).

De seguida mostram-se dois exemplos, um incorreto, em que o ficheiro não tem cabeçalhos e outro correto, onde os cabeçalhos foram incluídos na primeira linha.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2Fxm8D3VdELVwAxPsTF51P%2FRight.png?alt=media&#x26;token=10927e1f-1b2d-4254-99af-3d2845ba3dac" alt=""><figcaption><p>Exemplo incorreto, à esquerda, e correto, à direita, de inserção de cabeçalhos nas colunas</p></figcaption></figure>

O exemplo incorreto mostra um ficheiro [CSV ](https://mosaico.gov.pt/glossario#glossario-csv)com um cabeçalho que não é autoexplicativo, sendo, nesse caso, necessário fornecer explicações adicionais nos metadados.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FxDW2IXkfC10Y59PhfDTt%2FCard%20Extra%20Info-19.png?alt=media&#x26;token=0b12d423-14d9-4d33-8ea2-ceafa34bc5de" alt=""><figcaption><p>Exemplo incorreto onde a linha do cabeçalho não é autoexplicativa</p></figcaption></figure>

## Todas as linhas devem ter o mesmo número de colunas

Garantir que todas as linhas têm o mesmo número de colunas e sigam a estrutura correta de um ficheiro CSV.

De seguida são mostrados dois exemplos, um incorreto, onde falta o cabeçalho da última coluna e duas linhas não têm valores na última coluna, e outro correto, onde todas as linhas têm valores para todas as colunas.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FbTmxNnhwa2DsAoiXNnuZ%2FRight-9.png?alt=media&#x26;token=d020b1c5-4c76-45c6-8227-64fae072e403" alt=""><figcaption><p>Exemplo incorreto, à esquerda, e correto, à direita, do número de colunas em cada linha</p></figcaption></figure>

## Indicar unidades de medida

Indicar as unidades de medida de uma forma facilmente processável, declarando-as nas colunas correspondente ou, caso a unidade varie entre linhas, usando uma coluna para especificar a unidade utilizada. Adicionalmente, a unidade de medida pode ser referenciada nos [metadados ](https://mosaico.gov.pt/glossario#glossario-metadados)correspondentes do *stat:dcat*.

São ilustrados dois exemplos, um incorreto, onde a unidade de medida está incluída na célula que contém o valor, e um correto, onde existe uma coluna dedicada à unidade de medida utilizada em cada linha.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FTkVrHG9LLEp8PRpbyCHd%2FRight-10.png?alt=media&#x26;token=e46e0089-08ee-4fc1-a896-b9d62cc07f37" alt=""><figcaption><p>Exemplo incorreto, à esquerda, e correto, à direita, da indicação de unidades de medida</p></figcaption></figure>

No exemplo correto que se segue optou-se por especificar as unidades de medida utilizando a lista de vocabulário controlado disponibilizada pelo Serviço das Publicações da União Europeia.

<figure><img src="https://2869735785-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0oDmFsd3xf4yMMXZ1ctr%2Fuploads%2FUjcojjW5fVDhDMO7o0kN%2FCard%20Extra%20Info-20.png?alt=media&#x26;token=8c63eda4-3ed0-4323-9009-8a454ed3142a" alt=""><figcaption><p>Exemplo correto da indicação de unidades de medida, recorrendo à lista de vocabulário controlado</p></figcaption></figure>
