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.