Skip to content

Definizione del Data Schema

Cos'è un Data Schema

Il Data Schema è una descrizione formale che delinea la struttura dei dati all'interno di un Dataset.

Definisce come i dati sono formattati e archiviati e include altre informazioni chiave sulle capacità statistiche e analitiche del Dataset.

Il Command Center adotta una Definizione delloData Schema attraverso un formato JSON con una parziale adozione della Specifica dello Schema JSON.

Esempio

Considerando di avere il seguente Dataset

timestamp_isoitem_codevalid_flasks_producedshift
2020-01-05T06:00:0050781021st Shift
2020-01-06T06:00:0056611081st Shift
2020-01-07T06:00:005078791st Shift
2020-01-08T06:00:0058001261st Shift
...

La seguente è la definizione del Data Schema che descrive il contenuto del Dataset sopra:

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {
            "type": "string", 
            "cc_def": {
                "type": "timestamp"
            }
        },
        "item_code": {
            "type": "integer",
            "cc_def": {
                "type": "categorical",
                "scope": "nominal"
            }
        },
        "valid_flasks_produced": {
            "type": "integer",
            "cc_def": {
                "type": "numerical",
                "scope": "continuous"
            }
        },
        "shift": {
            "type": "string",
            "cc_def": {
                "type": "categorical",
                "scope": "nominal"
            }
        }
    }
}

Esploriamo come scrivere il Data Schema.

Creazione del Data Schema

Per definire il Data Schema, devi iniziare con la seguente definizione di base.

json
{
    "type": "object"
}

Questa è una definizione JSON di base con la parola chiave type che definisce il tipo della struttura JSON.

Tuttavia, non è ancora sufficiente per descrivere lo Schema del Dataset.

Definire le proprietà

La parola chiave properties deve essere definita per descrivere la struttura del Dataset. Quando si definisce properties, si crea un oggetto in cui ogni proprietà rappresenta un campo/colonna del tuo Dataset.

1. Aggiungi la parola chiave properties

Aggiungi la parola chiave di convalida properties alla Definizione del Data Schema:

json
{
    "type": "object",
    "properties": {}
}

2. Definisci le parole chiave dei campi del tuo Dataset

Aggiungi una parola chiave con il nome del campo (field_name) per ogni colonna che desideri definire nel tuo Dataset. Se i dati sono archiviati in un file csv, il nome del campo corrisponde al nome della colonna (nome della variabile) definita nella prima riga del tuo file csv. Nel nostro caso:

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {},
        "item_code": {},
        "valid_flasks_produced": {},
        "shift": {}
    }
}

3. Regole di Validazione

I nomi dei campi devono corrispondere esattamente ai nomi delle colonne del file CSV

Regole di validazione per il nome del campo (field_name):

  • Il nome del campo dovrebbe sempre iniziare con un carattere alfanumerico
  • Il nome del campo dovrebbe contenere solo lettere minuscole
  • Il nome del campo non dovrebbe iniziare con il carattere underscore (_)
  • Non sono ammessi caratteri speciali o spazi nel nome del campo
  • Sono ammessi solo il trattino o l'underscore ( - , _ ) nel nome del campo

4. Tipo di dati

Per ogni proprietà, aggiungi l'annotazione del tipo di dati usando la parola chiave type. La parola chiave type definisce il tipo di dati previsto per il campo.

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {
            "type": "string"
        },
        "item_code": {
            "type": "integer"            
        },
        "valid_flasks_produced": {
            "type": "integer"
        },
        "shift": {
            "type": "string"
        }
    }
}

Accetta i seguenti valori:

  • string: per valori di stringa (questo tipo dovrebbe essere utilizzato per i campi che rappresentano il timestamp del Dataset).
  • integer: per valori interi
  • numeric: per numeri in virgola mobile o decimali

5. Definizione statistica, la parola chiave cc_def

L'annotazione del Tipo di Dato non è sufficiente per descrivere le capacità statistiche/analitiche di ciascun campo disponibile nel Dataset.

Per completare queste informazioni, è necessario definire la parola chiave cc_def per ogni proprietà del campo.

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {
            "type": "string",
            "cc_def": {}
        },
        "item_code": {
            "type": "integer",
            "cc_def": {}            
        },
        "valid_flasks_produced": {
            "type": "integer",
            "cc_def": {}
        },
        "shift": {
            "type": "string",
            "cc_def": {}
        }
    }
}

Esploriamo le parole chiave disponibili per la parola chiave cc_def.

6. Definizione del type statistico

Il type nella parola chiave cc_def definisce le caratteristiche dei dati per scopi statistici e analitici del campo.

Il campo cc_def > type prevede i seguenti valori:

  • timestamp: per il campo che contiene le informazioni sul timestamp del record. Un Dataset dovrebbe avere un campo definito con questa parola chiave.

  • categorical: per campi che contengono dati categorical, noti anche come dati qualitativi. Rappresenta caratteristiche o attributi che possono essere ordinati in gruppi o categorie, ma non in un ordine numeric. Rappresenta caratteristiche o attributi che possono essere ordinati in gruppi o categorie, ma non in un ordine numeric. I dati categorical sono spesso utilizzati per la classificazione. Possono essere rappresentati come testo o simboli e non vengono utilizzati per calcoli matematici nella loro forma grezza.

  • numeric: per campi che contengono dati numerici, noti anche come dati quantitativi, rappresenta quantità misurabili ed è espressa in numeri. Coinvolge il conteggio o la misurazione degli attributi di una popolazione. I dati numerici sono adatti per calcoli matematici e analisi statistica. Possono essere ulteriormente descritti utilizzando misure come media, mediana e deviazione standard.

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {
            "type": "string",
            "cc_def": {
                "type": "timestamp"
            }
        },
        "item_code": {
            "type": "integer",
            "cc_def": {
                "type": "categorical"
            }
        },
        "valid_flasks_produced": {
            "type": "integer",
            "cc_def": {
                "type": "numeric"
            }
        },
        "shift": {
            "type": "string",
            "cc_def": {
                "type": "categorical"
            }
        }
    }
}

Per completare le definizioni statistiche/analitiche dei campi del dataset, è necessario definire un'altra parola chiave.

7. La definizione statistica scope

Lo scope, nella parola chiave cc_def, definisce lo scopo dei dati per scopi statistici e analitici del campo. Lo cc_def > scope è correlato alla parola chiave cc_def > type:

  • Per tipi categorical:

    • nominal: Queste sono categorie senza un ordine intrinseco. Ad esempio, colori (rosso, blu, verde) o marchi (Nike, Adidas, Puma).
    • ordinal (non implementato): Queste categorie hanno un ordine o una classifica specifica, ma gli intervalli tra le classifiche non sono necessariamente uguali. Ad esempio, valutazioni di soddisfazione (soddisfatto, neutro, insoddisfatto).
    • binary (non implementato): Questo è un caso speciale di dati categorical in cui ci sono solo due categorie possibili (campi boolean).
    • cyclical (non implementato): per dati categorical che hanno una natura ciclica, dove le categorie raggiungono una fine e poi "ripartono". (ad esempio, giorni della settimana)
  • Per tipi numerical:

    • discrete (non implementato): questi dati possono assumere solo determinati valori, come interi. Rappresenta spesso oggetti contabili, come il numero di studenti in una classe.
    • continuous: questi dati possono assumere qualsiasi valore all'interno di un intervallo ed è spesso misurato. Esempi includono altezza, peso o temperatura.

I tipi timestamp non hanno bisogno di una definizione scope.

json
{
    "type": "object",
    "properties": {
        "timestamp_iso": {
            "type": "string",
            "cc_def": {
                "type": "timestamp"
            }
        },
        "item_code": {
            "type": "integer",
            "cc_def": {
                "type": "categorical",
                "scope": "nominal"
            }
        },
        "valid_flasks_produced": {
            "type": "integer",
            "cc_def": {
                "type": "numeric",
                "scope": "continuous"
            }
        },
        "shift": {
            "type": "string",
            "cc_def": {
                "type": "categorical",
                "scope": "nominal"
            }
        }
    }
}

Il Data Schema, così definito, è completo e può essere utilizzato per la Creazione di un Dataset.