> For the complete documentation index, see [llms.txt](https://docs.opencityitalia.it/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opencityitalia.it/manuale-opencity-italia-sito-web-istituzionale-v3/modello-comuni/pubblicare-dati-e-statistiche-del-comune-dataset/gestire-record-identici-in-un-dataset.md).

# Gestire record identici in un dataset

Quando importi un dataset tramite file CSV o Google Spreadsheet, il sistema applica una logica di **deduplicazione**: due righe con valori identici in tutti i campi vengono trattate come lo stesso record, e ne viene importata una sola.

Questo comportamento è intenzionale e serve a evitare che lo stesso dato venga caricato più volte per errore. Tuttavia, in molti dataset è del tutto normale avere più righe con valori uguali, perché rappresentano eventi o voci distinte — non duplicati.

{% hint style="warning" %}
Sintomo tipico: il numero di record pubblicati sul sito è inferiore a quello del file sorgente, senza messaggi di errore visibili.
{% endhint %}

## Quando si presenta il problema

Il problema si verifica ogni volta che il dataset contiene più record legittimamente identici in tutti i campi. Alcuni esempi frequenti:

* dati sui pagamenti: più mandati allo stesso fornitore, per lo stesso importo, nella stessa data;
* elenchi di presenze o iscrizioni: più persone con nome, cognome e data identici (omonimie);
* registri di interventi o eventi ricorrenti: più voci con stessa tipologia, stessa data e stesso luogo;
* qualsiasi dataset esportato da un gestionale in cui la chiave univoca del record non è inclusa tra i campi esportati.

## La soluzione: aggiungere un campo identificativo univoco

Per consentire al sistema di distinguere record con valori identici, il CSV deve includere una colonna con un valore univoco per ogni riga. Questo campo funge da chiave primaria del record.

Le opzioni più comuni sono:

* un codice o numero già presente nel gestionale (numero mandato, codice pratica, ID iscrizione, ecc.) — soluzione preferita perché mantiene la coerenza con i dati di origine;
* un numero progressivo aggiunto manualmente o al momento dell'export (1, 2, 3...), se il gestionale non fornisce un identificativo per riga.

### Struttura del CSV prima e dopo

**Prima** — nessun campo identificativo: le righe identiche vengono scartate.

```
Fornitore,Importo,Data,Descrizione
Rossi Srl,52.29,01/01/2026,Acquisto beni
Rossi Srl,52.29,01/01/2026,Acquisto beni
```

→ Il sistema importa solo 1 riga su 2.

**Dopo** — ogni riga ha un ID univoco: tutti i record vengono caricati.

```
ID,Fornitore,Importo,Data,Descrizione
1,Rossi Srl,52.29,01/01/2026,Acquisto beni
2,Rossi Srl,52.29,01/01/2026,Acquisto beni
```

→ Il sistema importa entrambe le righe.

## Configurazione nella risorsa Dataset

Una volta che il CSV include la colonna identificativa, configurala nel backoffice in due passi.

**1. Imposta il campo come "Identifier"**

Nella sezione **Modifica la definizione dei campi**, individua la colonna identificativa e imposta la sua tipologia come **Identifier** invece di **String**. Questo indica al sistema che quel campo è la chiave univoca del record, esclusa dalla logica di deduplicazione.

**2. Escludi il campo dalla visualizzazione pubblica**

Il campo identificativo non deve necessariamente essere visibile ai cittadini: serve al sistema per riconoscere i record, ma spesso non ha significato per l'utente finale. Per nasconderlo, vai in **Modifica le impostazioni di visualizzazione**, scorri fino alla sezione **Tabella** e assicurati che il campo identificativo non sia incluso tra i campi da mostrare. Il campo continuerà a essere usato internamente, ma non apparirà nella tabella pubblica.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.opencityitalia.it/manuale-opencity-italia-sito-web-istituzionale-v3/modello-comuni/pubblicare-dati-e-statistiche-del-comune-dataset/gestire-record-identici-in-un-dataset.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
