Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Learn more
Estoy tratando de convertir el siguiente código SQL a DAX, no puedo obtener el mismo resultado que por SQL. ¿Podemos hacer esto en una sola medida o necesitamos dos medidas y luego restar?
Además, no puedo usar la función EXCEPTO en este caso
SELECT Count(DISTINCT( A.AccountNumber)) FROM factTable F
JOIN dimAccount A ON F.AccountKey = A.AccountKey y F.DateSk = A.DateSk
JOIN [dimDate] D on F.DateSk = D.DateSk
DONDE D.IsLastDayOfMonth = 1 y D.DateKey > '2020-11-30' y D.DateKey <= '2021-11-30'
e ISNULL(F.Sale ,0) = 0
y F.IsDeletetd = 'False'
y A.IsDeletetd = 'False'
y A.AccountNumber
NO EN(
SELECT DISTINCT(A.AccountNumber) FROM fact F
JOIN dimAccount A ON F.AccountKey = A.AccountKey y F.DateSk = A.DateSk
JOIN [dimDate] D on F.DateSk = D.DateSk
DONDE D.IsLastDayOfMonth = 1 y D.DateKey > '2020-11-30' y D.DateKey <= '2021-11-30'
e ISNULL(F.Sale ,0) > 0
y F.IsDeleted = 'False'
y A.Deleted = 'False'
)
¿Puede ayudarme a convertir el siguiente SQL en una consulta DAX, será de gran ayuda!
```
WITH course_lesson_counts AS (
    SELECT 
        cl.course_id, 
        COUNT(cl.lesson_id) AS total_lessons
    FROM course_lessons cl
    JOIN lessons l ON cl.lesson_id = l.id
    WHERE cl.publish_map_id IS NOT NULL AND l.publish_map_id IS NOT NULL
    GROUP BY cl.course_id
),
halfway_users AS (
    SELECT 
        ucp.course_id, 
        ucp.user_id, 
        COUNT(clp.lesson_id) AS completed_lessons
    FROM user_course_progress ucp
    JOIN course_lesson_progress clp ON ucp.user_id = clp.user_id AND ucp.course_id IN (
        SELECT course_id FROM course_lesson_counts
    )
    WHERE clp.progress_status IN ('in_progress', 'completed')
    GROUP BY ucp.course_id, ucp.user_id
)
SELECT 
    c.id AS course_id,
    c.name AS course_name,
    COUNT(DISTINCT hu.user_id) AS halfway_user_count
FROM courses c
JOIN course_lesson_counts clc ON c.id = clc.course_id
LEFT JOIN halfway_users hu ON c.id = hu.course_id AND hu.completed_lessons >= (clc.total_lessons / 2)
WHERE c.publish_map_id IS NOT NULL 
AND c.paid_type = 'paid'
GROUP BY c.id, c.name;
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		Seleccione m.id, count(distinto a.id) total_calls
desde el momento m
unir moment_keywords k en k.moment_id = m.id
Unirse a moment_mapping MP en mp.moment_keyword_id = k.id
Unir transcripción t en t.id = mp.transcription_id
Unir audio A en a.id = t.audio_id
donde m.id = 215
Agrupar por m.id
¿Alguien puede ayudarme a convertir esto en DAX? Tengo un total de 5 mesas desde la mesa de momento hasta la mesa de audio y tiene relaciones de muchos a uno entre todas ellas.
Estoy buscando encontrar un recuento distinto de callids donde un solo momento id = 215 para una tarjeta visual.
Para convertir el código SQL a DAX, puede probar el siguiente enfoque:
Reemplace las cláusulas FROM y JOIN con una función FILTER que filtre las filas de las tablas relevantes en función de las condiciones de la cláusula WHERE.
Reemplace las cláusulas SELECT y COUNT con una función CALCULATE que cuente los distintos valores AccountNumber mediante la función DISTINCTCOUNT.
Esta es la medida DAX resultante:
Recuento de números de cuenta distintos =
CALCULAR(
DISTINCTCOUNT(dimAccount[AccountNumber]),
FILTRO(
factTable,
factTable[DateSk] = dimDate[DateSk]
&& dimDate[IsLastDayOfMonth] = 1
&& dimDate[DateKey] > "2020-11-30"
&& dimDate[DateKey] <= "2021-11-30"
&& ISBLANK(factTable[Venta])
&& factTable[IsDeleted] = FALSE
&& dimAccount[IsDeleted] = FALSO
),
FILTRO(
dimAccount,
dimAccount[AccountKey] = factTable[AccountKey]
&& dimAccount[DateSk] = factTable[DateSk]
)
)
Esta medida debería darle el mismo resultado que la consulta SQL.
Nota: Reemplacé ISNULL(F.Sale ,0) = 0 con ISBLANK(factTable[Sale]) ya que DAX no tiene una función ISNULL. En DAX, puede usar la función ISBLANK para comprobar si un valor es NULL o una cadena vacía.
¡Espero que esto ayude! Avíseme si tiene alguna pregunta o si necesita más ayuda.
Saludos
Esteban Tao
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola
Comparta algunos datos, describa la pregunta y muestre el resultado esperado.
¿Entiendo correctamente que le gustaría tener un recuento distinto de números de cuenta, donde no hubo venta al final de cada mes?
Para darle algún consejo, sería bueno que proporcionara información más detallada como: ¿están los datos de ventas en su tabla de datos por día (por lo que debe resumirlos al último día del mes)? ¿Cuál sería el contexto de su informe?
Creo que no sería fácil darle una sola respuesta... especialmente si creo que también el SQL no tiene demasiado sentido (por ejemplo, ¿Por qué necesita poner la última condición WHERE (A.AccountNumber NOT IN( ...) ?... ¿No es suficiente la condición ISNULL(F.Sale ,0) = 0?)
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.