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!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
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
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
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.
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!