Skip to content

Cos’è un livello semantico, e cosa significa davvero definire una volta

Un livello semantico dà a una metrica una sola casa. Ogni strumento che calcola la metrica legge quell’unica casa. Tutti ottengono lo stesso numero. Ecco cosa significa in pratica, e cosa cambia quando gestisci più di un warehouse.

Aggiornato · 6 min di lettura

Lo stesso nome, due numeri

Due persone aprono due dashboard. Entrambe hanno l’etichetta Ricavo netto. I due numeri differiscono del quattro per cento. Entrambi reggono, perché ciascuno è stato calcolato da un’altra parte. Uno viene da un calcolo in una cartella di lavoro. L’altro viene da una vista nel warehouse, e nessuno dei due sa che l’altro esiste.

Di solito non è un problema dei dati in sé. Il warehouse sta bene. Il guaio è altrove. La definizione di Ricavo netto vive in più di un posto, quindi ce n’è più di una.

Un livello semantico risolve quell’unico guasto. Dà a una metrica una casa sola. Le altre persone poi leggono la metrica invece di riscriverla da capo.

Cos’è un livello semantico

Un livello semantico è una descrizione governata dei tuoi dati. Sta tra le tabelle fisiche e le persone che fanno domande. Contiene tre tipi di cose.

  • Entità. Gli oggetti di business di cui parli: cliente, ordine, polizza, sinistro.
  • Dimensioni. I modi in cui li tagli: regione, linea di prodotto, mese, canale.
  • Misure. I numeri, ognuno con l’espressione esatta che lo produce.

L’espressione è la parte che conta. Chiamare un campo Ricavo netto non crea un livello semantico; diventa una misura che il livello può usare quando ne registra l’aggregazione, i filtri e la granularità. Quei tre vengono poi pubblicati e fatti rispettare.

Un livello semantico è un contratto, non una copia dei tuoi dati. Non conserva righe. Conserva il loro significato concordato, e punta alle tabelle che le contengono.

Cosa significa definire una volta

Una volta significa che l’espressione sta in esattamente un posto. Ogni strumento che ha bisogno della metrica la legge da lì.

  1. Una persona definisce la misura nel warehouse, con la sua espressione, la sua granularità e i suoi filtri.
  2. La definizione viene pubblicata come oggetto governato. La piattaforma stessa lo capisce. Non è un documento sulla piattaforma.
  3. Ogni domanda che nomina quella misura riceve risposta eseguendo la definizione memorizzata.
  4. Una modifica alla definizione cambia ogni risposta, in una sola modifica, sotto una sola revisione.

Il test è brutale. Cambia la definizione di Ricavo netto in un posto. Se ogni dashboard, notebook e assistente segue, la metrica è definita una volta. Se altre copie vanno trovate e modificate, non era mai stata definita una volta.

La stessa idea, quattro nomi

Tutte e quattro le grandi piattaforme ormai lo offrono. Ognuna lo chiama con un nome diverso. Le parole contano più di quanto dovrebbero. Un team di warehouse conosce il proprio oggetto con il proprio nome, e la parola sbagliata rende quella conversazione più difficile del necessario.

Salesforce Data 360
Un modello semantico, registrato in Data 360. La superficie di domande che alimenta è Tableau Semantics.
Snowflake
Una semantic view, catalogata in Horizon Catalog. La superficie di domande che alimenta è Cortex Analyst.
Databricks
Una metric view, catalogata in Unity Catalog. La superficie di domande che alimenta è Genie.
Palantir AIP
Un’ontologia, pubblicata in Foundry. I tipi di oggetto portano le entità e le loro dimensioni, e una Function è il posto in cui una misura viene dichiarata.

Quattro nomi, una forma. Ognuno è un oggetto con un nome che contiene entità, dimensioni e misure. Ognuno vive nel catalogo della propria piattaforma, così gli strumenti della piattaforma lo rispettano. Foundry è quella che non nominerà una misura al posto tuo. Quando qualcuno dice che la sua azienda ha un livello semantico, è questo l’oggetto che intende. Chiedere quale dei quattro hanno costruito ti porta lì più in fretta che chiedere cosa contiene.

Una nota dall’uso reale, imparata sondando un account Snowflake reale. Lì le dimensioni devono essere qualificate dalla loro entità. Lo stesso nome di dimensione è spesso impostato su due entità a granularità diversa, e un nome nudo potrebbe significare l’una o l’altra. Snowflake lo rifiuta come ambiguo. È il comportamento giusto, e rende l’inizio confuso.

Gestire più di un warehouse

Dentro una sola piattaforma, definire una volta è una frase breve da dire. La maggior parte delle aziende di una certa dimensione gestisce almeno due piattaforme. Questo non cambierà.

La stessa tabella logica viene allora definita due volte, una per piattaforma, da due team sotto due processi di revisione. Entrambe le definizioni sono governate. Entrambe possono comunque allontanarsi. Nulla in nessuna delle due piattaforme osserva l’altra.

Il TabTotal di Boreon legge i cataloghi in un unico modello di oggetti. Lo stesso schema e la stessa tabella possono comparire in più posti. Arrivano come un unico oggetto che ricorda ogni sorgente da cui è venuto, non come oggetti separati senza legame. Ogni coppia di warehouse collegati viene poi confrontata, e dove due strutture non concordano il divario viene registrato come rilievo di governance che nomina quella coppia. Lo leggi in un rapporto, non in una riunione.

Quel confronto legge ciò che i cataloghi dichiarano. Una domanda non viene mai posta a più warehouse per vedere se le risposte coincidono: una query che nomina campi di più di uno viene rifiutata, non instradata, perché non c’è alcun motore sotto entrambi.

Cosa eredita

Un livello semantico che ti chiede di ribattere il tuo catalogo diventa un secondo catalogo. I secondi cataloghi diventano obsoleti. La prima sincronizzazione legge ciò che esiste già: tabelle, colonne, commenti, tag, chiavi e permessi. Le convenzioni di denominazione si aggiungono, e non sono mai richieste. Un warehouse che non corrisponde a nessuno degli schemi attesi arriva comunque intero.

Il nome del livello viene dall’etichetta qualificata dell’oggetto stesso. Un commento sull’oggetto non lo decide. Una tabella in meta è nel livello meta. Una tabella in gold è in gold. L’elenco dei nomi dei livelli è aperto. Un nome che nessuno ha insegnato allo strumento arriva comunque al posto giusto. Un elenco chiuso lo farebbe collassare in sconosciuto, insieme a ogni altra convenzione che non aveva ancora incontrato.

Dove un commento dichiarato e l’etichetta dell’oggetto non concordano, vengono conservati entrambi, e il divario è esso stesso un rilievo. Adottare la tua tassonomia e accorgersi di quando si contraddice sono lo stesso lavoro.

Perché il contratto viene fatto rispettare

Una definizione pubblicata che nessuno verifica è un documento. Il valore si vede in un momento preciso. Una query nomina una misura. La definizione memorizzata viene verificata prima che quella query giri.

In questo prodotto, i nomi che raggiungono il warehouse sono le copie del contratto stesso. Un nome fuori dal contratto non ha alcun percorso di codice verso un warehouse. La query torna indietro nominando ciò che era fuori contratto. Il risultato è anche limitato nel numero di righe.

Quella proprietà è costruita nel codice, non scritta in un’istruzione. Un’istruzione a un modello può essere ignorata. Un percorso di codice che non esiste non può essere persuaso. L’effetto per chi gestisce il sito è stretto e utile. Attraverso questo prodotto, una misura governata ha un solo modo per essere calcolata, ed è quello ufficiale.

Dove guardare

  • La console semantica mostra cosa si è sincronizzato, per warehouse, con conteggi e chip di parità.
  • La console delle integrazioni mostra quale credenziale ha usato ogni connessione, con host, ruolo e warehouse. Il segreto in sé non compare mai.
  • La scheda del campo porta nove attributi per campo, tra cui proprietario, steward e classificazione. Vedi cosa è documentato e cosa no.

Una prima sincronizzazione riporta spesso proprietari in gran parte sconosciuti. Lo strumento funziona. Ciò che vedi è quanto del tuo catalogo è documentato oggi, mostrato chiaramente. Un livello vuoto ottiene zero. Zero è l’unico punto di partenza che valga qualcosa.