Piensa en un proceso o evento que quieras analizar.
Supongamos que estaba creando Lougle Analytics y desea analizar las visitas (en lugar de las solicitudes de una sola página) a su sitio. Visitar un sitio web es un proceso.
Una tabla de hechos representa un proceso o evento que desea analizar, en este caso es una lista de visitas al sitio. Puede tener tantas tablas de hechos como desee, una por proceso o evento.
¿Qué cosas podrían serle útiles para analizar las visitas al sitio?
- Información sobre el navegador web (marca, resolución de pantalla, ...)
- Información sobre el usuario (país, estado, ciudad, ISP, en función de su dirección IP)
- Información sobre cuándo comenzó la visita (año, trimestre, mes, semana, día)
- La duración de la visita
- La página de referencia, la página de destino y la página de salida (título, ruta de URL)
- El número de páginas visitadas durante la visita.
Técnicamente, podría poner todo esto en una tabla, como lo haría en Excel, pero eso se volvería realmente grande muy rápido, por lo que haremos UN nivel de normalización. El diseño dimensional a menudo es simplemente "poner todo lo que necesita para un análisis en una gran tabla", y luego normalizar un nivel.
Entonces su tabla de hechos se verá así:
web_browser_key bigint
ip_address_key bigint
start_date_key int
referring_page_key bigint
landing_page_key bigint
exit_page_key bigint
duration_seconds int
number_of_pages_visited int
Tiene un montón de valores clave que se refieren a valores en otras tablas †, y dos no claves. Las no claves son valores numéricos y se denominan medidas . ¿Puedes tomar el promedio de la marca del navegador web? No, entonces es una dimensión. ¿Puedes tomar el promedio de la duración de la visita? Sí, entonces es una medida.
Las otras tablas se llaman tablas de dimensiones , y la ip_address
tabla de dimensiones podría verse así:
ip_address_key bigserial primary key, /* use meaningless surrogate keys */
ip_address inet unique,
country text,
division text,
locality text,
latitude numeric(8,6),
longitude numeric(9,6)
Tenga en cuenta que no está normalizado: el país podría derivarse de la ciudad (localidad). Sin embargo, en un almacén de datos, nos preocupamos por facilitar el análisis primero. Al facilitar el análisis, me refiero a evitar las uniones profundas.
Observe que algunos de los datos en la tabla de dimensiones son jerárquicos : país> división> localidad. Su servidor OLAP (con suerte) comprende las jerarquías para admitir operaciones de desglose.
Un cubo lógico es solo la colección de dimensiones y medidas con las que está trabajando. A diferencia del cubo de Rubik, puede tener más de 3 dimensiones. Solo piense en una dimensión como una columna en su conjunto de datos.
OLAP es un conjunto de operaciones que puede realizar contra un conjunto de datos, como pivotar, rebanar, cortar en cubitos, perforar. Piense en las tablas dinámicas de Excel. Un servidor OLAP facilita las operaciones OLAP.
† generalmente sin claves foráneas
city
en sus esquemas, por lo que cuando dicecountry could be derived from city
que no estoy seguro de lo que quiere decir.En la imagen a continuación, que es un ejemplo de un esquema estelar básico. Las dimensiones son las Dim_Tables.
Generalmente, estos son los valores por los que desea analizar los datos. Por lo tanto, desea ver las ventas de un producto en particular, en un país en particular, en un rango de fechas en particular.
En la tabla fact_sales tiene la única medida que es Unidades_vendidas.
Las medidas (en el nivel más simple) son solo cosas que desea agregar al analizar según los criterios de las dimensiones.
Si hay algo más específico que le gustaría saber, hágamelo saber.
fuente