Tabelle dei fatti e delle dimensioniFact and dimension tables

Quando si progetta lo schema per un database di Esplora dati di Azure, si può pensare alle tabelle che appartengono a una delle due categorie.When designing the schema for an Azure Data Explorer database, think of tables as broadly belonging to one of two categories.

Tabelle dei fattiFact tables

Le tabelle dei fatti sono tabelle i cui record sono "fact" non modificabili, ad esempio log del servizio e informazioni di misurazione.Fact tables are tables whose records are immutable "facts", such as service logs and measurement information. I record vengono aggiunti progressivamente alla tabella in modalità di flusso o in blocchi di grandi dimensioni.Records are progressively appended into the table in a streaming fashion or in large chunks. I record restano in attesa fino a quando non vengono rimossi a causa del costo o perché hanno perso il loro valore.The records stay there until they're removed because of cost or because they've lost their value. In caso contrario, i record non verranno mai aggiornati.Records are otherwise never updated.

I dati di entità sono talvolta contenuti nelle tabelle dei fatti, in cui i dati dell'entità cambiano lentamente.Entity data is sometimes held in fact tables, where the entity data changes slowly. Ad esempio, i dati relativi a un'entità fisica, ad esempio una parte di apparecchiature di Office che cambiano raramente la posizione.For example, data about some physical entity, such as a piece of office equipment that infrequently changes location. Poiché i dati in kusto non sono modificabili, la pratica comune consiste nel fare in modo che ogni tabella includa due colonne:Since data in Kusto is immutable, the common practice is to have each table hold two columns:

  • Una colonna Identity ( string ) che identifica l'entitàAn identity (string) column that identifies the entity
  • Ultima colonna timestamp modificata ( datetime )A last-modified (datetime) timestamp column

Viene recuperato solo l'ultimo record per ogni identità di entità.Only the last record for each entity identity is then retrieved.

Tabelle delle dimensioniDimension tables

Tabelle delle dimensioni:Dimension tables:

  • Mantenere i dati di riferimento, ad esempio le tabelle di ricerca da un identificatore di entità alle relative proprietàHold reference data, such as lookup tables from an entity identifier to its properties
  • Mantenere i dati di tipo snapshot in tabelle il cui intero contenuto cambia in una singola transazioneHold snapshot-like data in tables whose entire contents change in a single transaction

Le tabelle delle dimensioni non vengono inserite regolarmente con nuovi dati.Dimension tables aren't regularly ingested with new data. Al contrario, l'intero contenuto dei dati viene aggiornato in una sola volta, utilizzando operazioni quali . set-o-Replace, . Move extentso . Rename Tables.Instead, the entire data content is updated at once, using operations such as .set-or-replace, .move extents, or .rename tables.

In alcuni casi, le tabelle delle dimensioni potrebbero essere derivate dalle tabelle dei fatti.Sometimes, dimension tables might be derived from fact tables. Questo processo può essere eseguito tramite un criterio di aggiornamento nella tabella dei fatti, con una query sulla tabella che accetta l'ultimo record per ogni entità.This process can be done via an update policy on the fact table, with a query on the table that takes the last record for each entity.

Differenziazione delle tabelle dei fatti e delle dimensioniDifferentiate fact and dimension tables

In kusto sono presenti processi che distinguono tra le tabelle dei fatti e le tabelle delle dimensioni.There are processes in Kusto that differentiate between fact tables and dimension tables. Uno di essi è l' esportazione continua.One of them is continuous export.

Questi meccanismi consentono di elaborare i dati nelle tabelle dei fatti esattamente una volta.These mechanisms are guaranteed to process data in fact tables precisely once. Si basano sul meccanismo del cursore del database .They rely on the database cursor mechanism.

Ogni esecuzione di un processo di esportazione continua, ad esempio, Esporta tutti i record inseriti dall'ultimo aggiornamento del cursore del database.For example, every execution of a continuous export job, exports all records that were ingested since the last update of the database cursor. I processi di esportazione continua devono distinguere tra le tabelle dei fatti e le tabelle delle dimensioni.Continuous export jobs must differentiate between fact tables and dimension tables. Le tabelle dei fatti elaborano solo i dati appena inseriti e le tabelle delle dimensioni vengono utilizzate come ricerche.Fact tables only process newly ingested data, and dimension tables are used as lookups. Di conseguenza, è necessario tenere in considerazione l'intera tabella.As such, the entire table must be taken into account.

Non esiste alcun modo per "contrassegnare" una tabella come "tabella dei fatti" o "tabella delle dimensioni".There's no way to "mark" a table as being a "fact table" or a "dimension table". Il modo in cui i dati vengono inseriti nella tabella e la modalità di utilizzo della tabella è quello che identifica il tipo.The way data is ingested into the table, and how the table is used, is what identifies its type.