Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

En este tutorial, cubriremos la diferencia sobre cómo funciona la indexación de datos en una base de datos relacional versus en Vertipaq.

Las bases de datos relacionales almacenan los datos fila por fila. Por otro lado, Vertipaq lo hace columna por columna.

Veamos cómo estas dos formas de almacenar e indexar datos podrían afectar su proceso de desarrollo de informes, especialmente al ejecutar sus consultas.

Tabla de contenido

Indexación de datos por fila

Almacenar los datos fila por fila es la forma tradicional de almacenar datos. Sin embargo, este proceso lleva más tiempo, lo que afectará el rendimiento de su consulta.

Digamos que tenemos una tabla que contiene Marca, Color, Género, Cantidad y Precio Neto.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Si almacenamos todo en esta tabla en una base de datos, almacenará los datos fila por fila. Es por eso que la estructura de almacenamiento de datos tradicional también se denomina almacén de filas.

Primero, en la misma línea, almacenará los encabezados de columna que se encuentran en la primera fila: Marca, Color, Sexo, Cantidad y Precio neto. Luego pasa a la siguiente línea para almacenar los primeros elementos debajo de cada columna: A. Datum, Azure, un espacio en blanco, 1 y 103.2. Esto continúa fila por fila.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Entonces, ¿cómo vamos a calcular la de la cantidad usando este método de indexación de datos?

Primero, comienza con la primera fila, que contiene los encabezados de las columnas. Luego, salta a la siguiente línea y salta a través de los otros datos hasta que llega a la primera cantidad que ve, que es 1. Luego salta de línea a línea, repasando todos los datos que contiene cada fila y reúne todos los cantidades se encuentra.

Una vez que ha apartado todas las cantidades de cada fila, esa es la única vez que se completa el cálculo.

Probablemente pueda imaginar lo tedioso que es el proceso si está preparando un informe de LuckyTemplates que usa una conexión DirectQuery a una fuente de datos SQL. En este caso, los servicios de análisis convertirán el código DAX al lenguaje SQL y luego comenzarán a revisar la estructura de datos fila por fila.

Indexación de datos por columna

Para evitar el largo proceso involucrado, tiene la opción de almacenar los datos columna por columna a través de Vertipaq cuando elige el modo de importación.

Cuando utiliza el almacenamiento de columnas en lugar del almacenamiento de filas, la marca, el color, el sexo, la cantidad y el precio neto se almacenarán cada uno en diferentes estructuras de datos.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Digamos que queremos obtener la SUMA de los valores en la columna Cantidad. No será necesario pasar la marca, el color y otros datos fuera de la columna Cantidad. En un solo escaneo, lee toda la columna Cantidad de arriba a abajo y suma todos los valores.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Debido a esto, las consultas se ejecutarán más rápidamente en comparación con hacerlo de izquierda a derecha.

Comparación del tiempo de ejecución en consultas simples

Para ver realmente la gran diferencia entre el almacenamiento de filas y el almacenamiento de columnas, hagamos algunas consultas de prueba tanto en SQL como en Vertipaq. El tiempo de ejecución debe decirnos qué tan rápido se compara un proceso con el otro.

Comencemos con una consulta simple en SQL. Vamos a calcular la SUMA de la columna Cantidad en la tabla Ventas.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Como puede ver, el tiempo total de ejecución es de 2,2 segundos.

Ahora, vayamos a DAX Studio y usemos la función EVALUAR para ejecutar la misma consulta. Necesitamos activar los tiempos del servidor y esperar a que se complete el rastreo.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

También debemos asegurarnos de que la opción "Borrar caché y luego ejecutar" esté seleccionada cuando ejecutemos la consulta.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Una vez que se ejecuta la consulta, verá que solo toma 3 milisegundos completar la misma consulta que hicimos en SQL anteriormente.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

El conjunto de resultados también debe coincidir con SQL y DAX Studio. Si los ponemos uno al lado del otro, puede ver que estamos devolviendo el mismo valor.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Puede intentar ejecutar la consulta unas cuantas veces más para ver qué tan consistente es el tiempo de ejecución.

Comparación del tiempo de ejecución en consultas más complicadas

Esta vez, comparemos el tiempo de ejecución cuando ejecutamos consultas más complicadas.

Digamos que queremos identificar la SUMA de Cantidad de Ventas para cada marca. Para ello, podemos utilizar sobre los de la Marca de cada Producto. En el contexto bajo, también crearemos una nueva tabla llamada Cantidad total donde vamos a para la SUMA de la Cantidad de ventas.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Si ejecutamos este código, puede ver que el tiempo total de ejecución es de 7 milisegundos.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

En segundo plano, este código en realidad ejecuta dos consultas. El primero toma la columna Marca de la tabla Productos, luego ejecuta una UNIÓN IZQUIERDA en las columnas Clave de producto tanto de la columna Ventas como de la columna Productos.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

La segunda consulta simplemente recupera la columna Marca de la tabla Productos.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Si voy a la pantalla de resultados, puede ver que la medida Cantidad total se ha dividido en función de cada marca.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Ahora vayamos al servidor SQL y escribamos la misma consulta.

Empujaremos la tabla DaxStudio Sales a la siguiente línea, haciendo referencia a la tabla Sales AS S. Luego, también vamos a ejecutar LEFT JOIN en la tabla DaxStudio Products referenciada AS P, con la S.Product Key igual a P. Clave de producto. También vamos a usar P.Brand con la SUMA de la cantidad y la cantidad total en la instrucción SELECT . Finalmente, vamos a usar para P.brand.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

Una vez que ejecutamos este código, obtendremos una tabla que contiene la Cantidad Total segregada por cada Marca, que es la misma que obtuvimos anteriormente en Vertipaq.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas

En cuanto al tiempo total de ejecución, sigue siendo mucho más lento con 2,5 segundos.

Indexación de datos en Vertipaq: almacenamiento de filas frente a almacenamiento de columnas


DAX para LuckyTemplates: Optimización mediante motores de fórmulas en DAX Studio Lecciones
y técnicas de optimización de consultas de DAX
Rendimiento de consultas y configuración de DAX Studio

Conclusión

Es evidente lo rápido que es realmente el almacenamiento de columnas a través de Vertipaq en comparación con el almacenamiento de filas en una base de datos SQL. Esto demuestra la importancia de conocer realmente cómo funciona la indexación de datos a través de diferentes plataformas.

Puede parecer un pequeño sacrificio al principio si aún elige optar por los 2,5 segundos que el almacén de filas ejecuta su consulta en comparación con los 7 milisegundos. Pero todos ejecutamos varias consultas cuando creamos nuestros informes y todos esos tiempos de ejecución se sumarán, lo que afectará la productividad y la experiencia del usuario a largo plazo.


Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Qué es uno mismo en Python: ejemplos del mundo real

Cómo guardar y cargar un archivo RDS en R

Cómo guardar y cargar un archivo RDS en R

Aprenderá a guardar y cargar objetos desde un archivo .rds en R. Este blog también cubrirá cómo importar objetos desde R a LuckyTemplates.

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

Revisión de los primeros N días hábiles: una solución de lenguaje de codificación DAX

En este tutorial del lenguaje de codificación DAX, aprenda a usar la función GENERAR y a cambiar dinámicamente el título de una medida.

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Showcase Insights utilizando la técnica de elementos visuales dinámicos de subprocesos múltiples en LuckyTemplates

Este tutorial cubrirá cómo usar la técnica de elementos visuales dinámicos de subprocesos múltiples para crear información a partir de visualizaciones de datos dinámicos en sus informes.

Introducción al contexto de filtro en LuckyTemplates

Introducción al contexto de filtro en LuckyTemplates

En este artículo, repasaré el contexto del filtro. El contexto del filtro es uno de los temas principales que cualquier usuario de LuckyTemplates debería conocer inicialmente.

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Los mejores consejos para usar las aplicaciones en el servicio en línea de LuckyTemplates

Quiero mostrar cómo el servicio en línea de LuckyTemplates Apps puede ayudar a administrar diferentes informes e información generada a partir de varias fuentes.

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Analice los cambios en el margen de beneficio a lo largo del tiempo: análisis con LuckyTemplates y DAX

Aprenda a calcular los cambios de su margen de beneficio utilizando técnicas como la bifurcación de medidas y la combinación de fórmulas DAX en LuckyTemplates.

Ideas de materialización para cachés de datos en DAX Studio

Ideas de materialización para cachés de datos en DAX Studio

Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.

Informes comerciales con LuckyTemplates

Informes comerciales con LuckyTemplates

Si todavía usa Excel hasta ahora, este es el mejor momento para comenzar a usar LuckyTemplates para sus necesidades de informes comerciales.

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber

¿Qué es la puerta de enlace de LuckyTemplates? Todo lo que necesitas saber