Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
Hola a todos
¡Lo que me resulta bastante natural en SQL puede resultar un poco más difícil de replicar en DAX en función de mi nivel de conocimiento actual!
Tomemos el siguiente ejemplo simple:
SELECT
DA.Source_Plant,
Target_Plant,
DA.Material,
DA.Calendar_Week_Year,
DA.Sales_Plan,
SQ1.Total_Sales_Plan,
ISNULL(DA.Sales_Plan / NULLIF(SQ1.Total_Sales_Plan, 0), 0) AS Sales_Plan_Ratio
FROM
Data_Upload AS DA
LEFT OUTER JOIN
(
SELECT
Source_Plant,
Material,
Calendar_Week_Year,
SUM(Sales_Plan) AS Total_Sales_Plan
FROM
Data_Upload
GROUP BY
Source_Plant,
Material,
Calendar_Week_Year
) AS SQ1
ON SQ1.Source_Plant = DA.Source_Plant
AND SQ1.Material = DA.Material
AND SQ1.Calendar_Week_Year = DA.Calendar_Week_YearComo puede ver, estamos seleccionando datos de una tabla (Data_Upload) y luego uniéndonos a la misma tabla nuevamente a través de una subconsidación (SQ1), pero esta vez con los datos agrupados en un nivel superior. Usando este método, el resultado es una tabla que me muestra el resultado de grano más bajo, así como el resultado de grano más alto, y luego puedo crear columnas calculadas contra los dos granos (por ejemplo, la columna Sales_Plan_Ratio).
Estoy bastante familiarizado con los agregadores e iteradores en DAX, así como con SUMMARIZECOLUMNS, etc., pero no conozco el mejor enfoque para abordar lo anterior. ¿Alguien tiene algún consejo que esté dispuesto a compartir, por favor?
Gracias
Matty
Solved! Go to Solution.
@Matty Creo que esto sería una transalación directa.
Table = ADDCOLUMNS(ADDCOLUMNS(Source,"Total_Sales_Plan",CALCULATE(SUM(Source[Sales_Plan]),ALLEXCEPT(Source,Source[Source_Plant], Source[Material],Source[Calendar_Week_Year])))
"Sales_Plan_Ratio",coalesce(DIVIDE(Source[Sales_Plan],[Total_Sales_Plan]),0))
de lo contrario, proporcione un dato de muestra y cuál es el resultado que genera TSQL
@Matty en SQL puede escribir esto como una consulta para devolver una tabla.
En DAX, puede escribir una consulta para devolver una tabla derivada o utilizar un modelo de datos y escribir una medida para devolver lo que devolvería la consulta anterior.
¿Puede proporcionar más contexto sobre cuál es su intención y cómo pretende lograr esto? ¿Tabla/Medida derivada de DAX?
Si lo que pretende es medir, ¿puede proporcionar datos de muestra y la salida deseada, de lo contrario, la sintaxis de sintaxis de SQL a DAx también es posible si desea lograr esto a través de una tabla derivada de DAX?
Hay smpa01,
Soy razonablemente bueno escribiendo medidas y creando tablas calculadas en DAX, pero no he tenido mucha suerte encontrando nada que replique lo que está haciendo la consulta SQL anterior.
Soy consciente de las variables en DAX y estaba pensando que este tipo de tabla podría construirse a través de un par de variables, que luego se unen para lograr el resultado final. Pero no he tenido mucha suerte haciendo que nada funcione.
¿Alguna idea de cómo lo anterior se convertiría en DAX en forma de una tabla calculada?
Gracias
Matty
@Matty Creo que esto sería una transalación directa.
Table = ADDCOLUMNS(ADDCOLUMNS(Source,"Total_Sales_Plan",CALCULATE(SUM(Source[Sales_Plan]),ALLEXCEPT(Source,Source[Source_Plant], Source[Material],Source[Calendar_Week_Year])))
"Sales_Plan_Ratio",coalesce(DIVIDE(Source[Sales_Plan],[Total_Sales_Plan]),0))
de lo contrario, proporcione un dato de muestra y cuál es el resultado que genera TSQL
Gracias por esto. He usado una construcción similar antes, pero había olvidado que podría usarse para lo que necesitaba aquí. De hecho, ahora he incluido un RESUMEN dentro de los ADDCOLUMNS internos para conservar solo las columnas que necesitaba de la tabla de referencia.
¡Gracias de nuevo!
Matty
Esto parece correcto, pero falta una coma antes de "Sales_Plan_Ratio".
ADDCOLUMNS (
ADDCOLUMNS (
Source,
"Total_Sales_Plan",
CALCULATE (
SUM ( Source[Sales_Plan] ),
ALLEXCEPT (
Source,
Source[Source_Plant],
Source[Material],
Source[Calendar_Week_Year]
)
)
), /* <--- Comma goes here. */
"Sales_Plan_Ratio", COALESCE ( DIVIDE ( Source[Sales_Plan], [Total_Sales_Plan] ), 0 )
)
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!