Qué es uno mismo en Python: ejemplos del mundo real
Qué es uno mismo en Python: ejemplos del mundo real
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.
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.
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.
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.
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.
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.
También debemos asegurarnos de que la opción "Borrar caché y luego ejecutar" esté seleccionada cuando ejecutemos la consulta.
Una vez que se ejecuta la consulta, verá que solo toma 3 milisegundos completar la misma consulta que hicimos en SQL anteriormente.
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.
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.
Si ejecutamos este código, puede ver que el tiempo total de ejecución es de 7 milisegundos.
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.
La segunda consulta simplemente recupera la columna Marca de la tabla Productos.
Si voy a la pantalla de resultados, puede ver que la medida Cantidad total se ha dividido en función de cada marca.
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.
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.
En cuanto al tiempo total de ejecución, sigue siendo mucho más lento con 2,5 segundos.
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
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.
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.
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.
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.
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.
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.
Este tutorial analizará las ideas de materialización de cachés de datos y cómo afectan el rendimiento de DAX al proporcionar resultados.
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