1. Glosar/

Grain

Granularitate, Nivel de detaliu

Grain-ul (granularitatea) este nivelul de detaliu al unei fact table într-un data warehouse. Definește ce reprezintă un singur rând: o tranzacție, un sumar zilnic, un total lunar, o linie de factură.

Cum funcționează #

Alegerea grain-ului este prima decizie la proiectarea unei fact table. Toate celelalte decizii — măsuri, dimensiuni, ETL — decurg din ea:

  • Grain fin (ex. linie de factură): flexibilitate maximă în interogări, mai multe rânduri de gestionat
  • Grain agregat (ex. total lunar per client): mai puține rânduri, interogări mai rapide, dar imposibilitatea de a coborî în detaliu

Principiul fundamental al lui Kimball: modelează întotdeauna la cel mai fin nivel de detaliu disponibil în sistemul sursă.

La ce servește #

Grain-ul determină:

  • La ce întrebări poate răspunde data warehouse-ul
  • Ce dimensiuni sunt necesare (un grain la nivel de linie necesită dim_produs, un grain lunar nu)
  • Cât de mare este fact table-ul și cât durează ETL-ul
  • Dacă drill-down-ul în rapoarte este posibil sau nu

Când se folosește #

Grain-ul se definește în faza de proiectare a modelului dimensional, înainte de a scrie orice DDL sau ETL. Schimbarea grain-ului după go-live echivalează cu reconstruirea data warehouse-ului de la zero — motiv pentru care alegerea inițială este atât de critică.