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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Syndicate_Admin
Administrator
Administrator

¿Se puede convertir este SQL a DAX?

Este SQL:

DECLARE @StartingDate AS DATE = '20201001'
DECLARE @EndingDate AS DATE = GETDATE()

WITH

FirstSubscription AS (
	SELECT 
		[DonorNummer],
		[DatoKeyStoettePeriode]
	FROM [Medlemsdata].[FactBetalingslinjer]
	WHERE
		BetalingsNr = 1 
		AND AbonnementsNr = 1
		AND DatoKeyStoettePeriode BETWEEN @StartingDate AND @EndingDate
		AND BetalingsmetodeKey NOT IN (-1,-24)
		AND StøttetypeKey IN (24,25,26)
	)

select
	[Customer] = fb.[DonorNummer],
	[Category] = ds.Støttetype,
	[pcs] = COUNT(fb.StøttetypeKey),
	[Amount] = SUM([#Bogført betalt beløb])
from [Medlemsdata].[FactBetalingslinjer] fb
JOIN FirstSubscription fs ON fb.[DonorNummer] = fs.[DonorNummer] AND fb.[DatoKeyStoettePeriode] <= fs.[DatoKeyStoettePeriode]
JOIN Medlemsdata.DimStøttetype ds ON fb.StøttetypeKey = ds.StøttetypeKey
GROUP BY
	fb.[DonorNummer],
	ds.Støttetype
ORDER BY
	1

Startingdate y EndingDate es solo el control deslizante de fecha, por lo que sea cual sea el período que elija, el resultado lo refleja

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola, @Bokazoit

Para convertir la consulta SQL proporcionada a DAX, puede seguir los pasos que se indican a continuación:

Cree una tabla de cálculo en Power BI para replicar FirstSubscriptionCTE:

FirstSubscription = 
FILTER (
    Medlemsdata[FactBetalingslinjer],
    Medlemsdata[FactBetalingslinjer][BetalingsNr] = 1
    && Medlemsdata[FactBetalingslinjer][AbonnementsNr] = 1
    && Medlemsdata[FactBetalingslinjer][DatoKeyStoettePeriode] >= MIN(DateTable[Date])
    && Medlemsdata[FactBetalingslinjer][DatoKeyStoettePeriode] <= MAX(DateTable[Date])
    && NOT (Medlemsdata[FactBetalingslinjer][BetalingsmetodeKey] IN {-1, -24})
    && (Medlemsdata[FactBetalingslinjer][StøttetypeKey] IN {24, 25, 26})
)

Cree métricas para recuentos y sumas:

CustomerCategoryCount = 
CALCULATE (
    COUNT ( Medlemsdata[FactBetalingslinjer][StøttetypeKey] ),
    FILTER (
        Medlemsdata[FactBetalingslinjer],
        Medlemsdata[FactBetalingslinjer][DonorNummer] IN VALUES (FirstSubscription[DonorNummer])
        && Medlemsdata[FactBetalingslinjer][DatoKeyStoettePeriode] <= VALUES (FirstSubscription[DatoKeyStoettePeriode])
    )
)

CustomerCategoryAmount = 
CALCULATE (
    SUM ( Medlemsdata[FactBetalingslinjer][#Bogført betalt beløb] ),
    FILTER (
        Medlemsdata[FactBetalingslinjer],
        Medlemsdata[FactBetalingslinjer][DonorNummer] IN VALUES (FirstSubscription[DonorNummer])
        && Medlemsdata[FactBetalingslinjer][DatoKeyStoettePeriode] <= VALUES (FirstSubscription[DatoKeyStoettePeriode])
    )
)

Para mostrar los resultados, cree un objeto visual de tabla en Power BI y agregue los siguientes campos:
Cliente de Medlemsdata[FactBetalingslinjer][DonorNummer]
Categoría de Medlemsdata[DimStøttetype][Støttetype]
pcs como medida de CustomerCategoryCount
Importe como medida de CustomerCategoryAmount

Si lo desea, también puede crear una tabla de resumen en DAX para uso visual:

SummaryTable = 
SUMMARIZE (
    Medlemsdata[FactBetalingslinjer],
    Medlemsdata[FactBetalingslinjer][DonorNummer],
    Medlemsdata[DimStøttetype][Støttetype],
    "pcs", [CustomerCategoryCount],
    "Amount", [CustomerCategoryAmount]
)

Siguiendo estos pasos, puede replicar la funcionalidad de las consultas SQL en Power BI mediante DAX

hackcrr

Si esta publicación ayuda, considere aceptarla como la solución y felicitaciones a esta publicación para ayudar a los otros miembros a encontrarla más rápidamente

Syndicate_Admin
Administrator
Administrator

Hola @Bokazoit - Sí, es posible pero con ligeras modificaciones en su código sql

ya que no admitirá DECLARE En su lugar, definimos directamente las variables usando VAR.
Emulamos la funcionalidad de la cláusula WITH mediante el uso de DEFINE para definir tablas y medidas calculadas. para realizar group by usaremos la función SUMMARIZE para agrupar los datos y calcular agregados en función de las medidas definidas.

Puede definir una tabla calculada para FirstSubscription utilizando los mismos parámetros de fecha.
DEFINIR
VAR StartingDate = DATE(2020, 10, 01)
VAR FechaFinalización = HOY()
EVALUAR
FILTRO (
ADDCOLUMNS (
SUMMARIZECOLUMNS (
'Datos del miembro'[DonorNumber],
'Datos de miembro'[DateKeyStoettePeriod]
),
"@BetalingsNr", CALCULATE(COUNTROWS('Datos del miembro'), 'Datos del miembro'[PayNumber] = 1),
"@AbonnementsNr", CALCULATE(COUNTROWS('Datos de miembro'), 'Datos de miembro'[Nº de suscripción] = 1),
"@BetalingsmetodeKey", VALUES('Datos del miembro'[Método de pago]),
"@St øttetypeKey", VALUES('Member Data'[Support TypeKey])
),
[@BetalingsNr] = 1
&& [@AbonnementsNr] = 1
&& NOT ( [@BetalingsmetodeKey] IN { -1, -24 } )
&& [@St øttetypeKey] IN { 24, 25, 26 }
&& 'Datos del miembro'[DateKeyStoettePeriod] >= StartingDate
&& 'Datos de miembro'[DateKeyStoettePeriod] <= FechaFinalización
)

Defina una medida para calcular pcs:
DEFINIR
MEDIDA 'Medlemsdata'[pcs] =
COUNTROWS(
FILTRO(
«Medlemsdata»,
'Medlemsdata'[DonorNummer] IN VALUES('Medlemsdata'[DonorNummer])
)
)

calcule una medida para calcular la cantidad de la siguiente manera:
DEFINIR
MEDIDA 'Medlemsdata'[Cantidad] =
SUMX(
«Medlemsdata»,
'Medlemsdata'[#Bogført betalt beløb]
)

EVALUAR
RESUMIR(
«Datos de los miembros»,
'Datos del miembro'[DonorNumber],
'Datos de los miembros' [Tipo de soporte],
"pcs", [pcs],
"Cantidad", [Cantidad]
)
ORDENAR POR
'Datos de los miembros'[DonorNumber]

verifique el código Dax anterior y hágaselo saber

¿He respondido a tu pregunta? ¡Marca mi publicación como una solución! ¡Esto ayudará a otros en el foro!
¡Agradezco sus felicitaciones!

Cuando introduzco su código, dice que la sintaxis de DEFINE es incorrecta.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

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.