Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

Pregunta de SQL a DAX...

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_Year

Como 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

1 ACCEPTED 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

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Gracias @AlexisOlson

Syndicate_Admin
Administrator
Administrator

@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 )
)

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Kudoed Authors