Este tutorial tratará sobre CallBackDataID , que es un problema de rendimiento en DAX Studio. Aprenderá lo que hace y cómo afecta el rendimiento de su consulta DAX.
El motor de almacenamiento funciona para proporcionar datos al motor de fórmulas en forma de caché de datos. Pero cuando el motor de almacenamiento no puede evaluar una expresión, pregunta y vuelve a llamar al motor de fórmulas para obtener ayuda con el CallBackDataID .
Tener un CallBackDataID en su cálculo ralentiza el rendimiento de DAX porque usa tanto el motor de fórmula como el de almacenamiento. Sin embargo, sigue siendo mejor que tener solo el motor de fórmulas para hacer todo el trabajo porque aún funciona con datos comprimidos y no requerirá materialización.
Además, cuando el motor de fórmulas está involucrado, los resultados no se almacenan en caché. Las cachés mejoran la experiencia del usuario al ejecutar una consulta o medida en LuckyTemplates.
Tabla de contenido
Dónde encontrar el CallBackDataID
CallBackDataID se puede encontrar en Server Timings dentro de DAX Studio. Debido a su importancia, se destacan en la instrucción xmSQL. Cuando busca optimizar su DAX, encontrar CallBackDataID es el mejor lugar para comenzar.
Otra técnica de optimización es aprovechar los filtros en siempre que sea posible. Usar CALCULATE en los filtros es mejor que usar como tabla. FILTER es un iterador y cuando filtra una tabla, la repetirá . La presencia de estos dos iteradores podría ralentizar su consulta.
Aquí hay dos consultas de muestra con y sin CallBackDataID .

Esta es una medida localizada que define las dos consultas anteriores.

La medida superior itera la tabla de ventas, multiplica el precio y la cantidad actuales y luego los suma. La medida inferior verifica si la Fecha de compra es mayor o igual al 31 de marzo de 2016. Tener una función en una medida crea un CallBackDataID porque no usa CALCULATE .
Para probar esto, ejecute la consulta que tiene CallBackDataID . Asegúrese de borrar el caché y activar los tiempos del servidor y los planes de consulta antes de ejecutarlo.
Si hace clic en la pestaña Tiempos del servidor en la parte inferior, puede ver que el primer escaneo está resaltado. Esto se debe a la presencia de CallBackDataID .

También puede ver CallBackDataID en la instrucción xmSQL. La función IF en la medida está más allá de las capacidades del motor de almacenamiento, por lo que pide ayuda al motor de fórmulas.

Cómo resolver el problema de rendimiento
Si ejecuta la consulta que no tiene un CallBackDataID , puede ver que los escaneos ya no están resaltados.

Esto se debe a que el filtro CALCULATE se está desplazando hacia el motor de almacenamiento. Ya no necesita la ayuda del motor de fórmulas porque puede funcionar solo.
En la medida de lo posible, intente utilizar filtros en CALCULATE . Optimiza el rendimiento de DAX al enviar la mayor parte del trabajo al motor de almacenamiento, lo que lo hace más rápido.
Motor de almacenamiento en LuckyTemplates: operadores de VertiPaq y medidas de consultas
en LuckyTemplates: consejos y técnicas de optimización
Analizador de VertiPaq en DAX Studio | Tutorial de LuckyTemplates
Conclusión
Pueden surgir problemas de rendimiento si su consulta es demasiado compleja para que funcione el motor de almacenamiento. Trae procesos innecesarios como CallBackDataID en el cálculo y ralentiza su DAX. Puede mitigarlo usando filtros en CALCULATE .