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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
AvPowerBI
Post Patron
Post Patron

Cómo escribir una consulta DAX similar según Subquery en SQL Server

Hola

¿Cómo escribiría una consulta DAX sonrímil basada en la siguiente consulta T-SQL:


Seleccione
a.CustomerName
,SUM(a.AvailableFlag) AS AvailableDays
De
(
SELECCIONAR DISTINTO
Ce. CalendarKey
Ce. AvailableFlag
,c.CustomerName
De
PersonCalendar ec
INNER JOIN
Visitas v
En
Ce. Db á v.Db
y ec. PersonId á v.PersonId
y ec. PersonDay á Convert(Date,v.ArriveDttm)

INNER JOIN
Llamadas c
ON v.Db á c.Db
y v.CallNo á c.CallNo


Dónde

Año(v.ArriveDttm) en (2019,2020)
Y ec. Db á 'Reino Unido'
) a
Agrupar por a.CustomerName
orden por 1

Gracias

7 REPLIES 7
v-yingjl
Community Support
Community Support

Hola @AvPowerBI ,

Lo he intentado, pero no estoy seguro:

table =
VAR tab =
    CALCULATETABLE (
        VALUES ( ec[calendarkey] ),
        VALUES ( ec[availableflag] ),
        VALUES ( c[customername] ),
        FILTER (
            CROSSJOIN ( ec, b ),
            ec[db] = v[db]
                && ec[personid] = v[personid]
                && ec[personday] = FORMAT ( v[arrivedttm], "General Date" )
        ),
        FILTER ( CROSSJOIN ( v, c ), v[db] = c[db] && v[callno] = c[callno] ),
        OR ( YEAR ( v[arrivedttm] ) = 2019, YEAR ( v[arrivedttm] ) = 2020 )
            && ec[db] = 'UK'
    )
RETURN
    SUMMARIZE (
        tab,
        'c'[customername],
        "AvailableDays", SUM ( 'ec'[availableflag] )
    )

Consulte los siguientes artículos:

  1. from-sql-to-dax-projection
  2. from-sql-to-dax-joining-tables/
  3. from-sql-to-dax-in-and-exists/
  4. from-sql-to-dax-grouping-data/
  5. from-sql-to-dax-filtering-data/

Best Looks,
Yingjie Li

Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola V-yingl,

Gracias por su ayuda hasta ahora, he intentado la forma que ha mencionado, pero estaba teniendo problemas que lo implentan y no se dio cuenta de que sería tan complejo la consulta DAx para obtener el resultado que quería.

Por lo tanto, he proporcionado un ejemplo y añadí la hoja de cálculo y el archivo pbix en One Drive, verá los resultados de lo que quiero desde el enlace oneshare a continuación

https://1drv.ms/u/s!Aknl2UdxdHn0cTzGDcZPqkEDXcI?e=KXvDVU

VisitsModel.PNG

Desea tener los siguientes resultados, cuando la dimensión es CustomerName pero sigue repitiendo el mismo valor de 6

Gracias

Desea tener los siguientes resultados, cuando la dimensión es CustomerNamepero sigue repitiendo el mismo valor de 6

Visits Results.PNG

Los valores repetidos como este son generalmente indicativos de un problema de relación.

Aquí la tabla Visitas no puede filtrar PersonCalendar debido a la dirección de la relación.

Soluciones : cambiar la dirección a 'bidireccional' entre Visitas y PersonCalendar . Funcionará, pero puede causar problemas de relación para otros resultados

O

reelaborar el modelo de datos. Esto dependería de lo que usted está tratando de informar sobre

O

utilizar CROSSFILTER para filtrar el PersonCalendar por sólo esta medida, por ejemplo.

FiltAvailDays ? CALCULATE([AvailableDays], CROSSFILTER(PersonCalendar[PersonIdDateKey], Visits[PersonIdDateKey], Both))

Gracias HotChilli,

Voy a echar un vistazo a estas funciones DAX que ha mentoned, sólo quería comprobar que fue capaz de acceder a la carpeta OneDrive que mencioné en el post anterior?

Actualmente estoy en una transición de QlikView a Power BI, donde Qlikview tenía una función llamada Cíclica que se podía recorrer a través de diferentes dimensiones y automáticamente resolvería el valor para usted, sin tener la misma suerte en Power BI me temo.

Hay @AvPowerBI ,

Basado en su archivo de ejemplo, he creado una medida pero obtengo los diferentes valores como este después de cambiar la dirección del filtro cruzado de único a ambos

cross filter.png

Measure =
VAR tab =
    ADDCOLUMNS (
        RELATEDTABLE ( Visits ),
        "flag", RELATED ( PersonCalendar[AvailableDayFlag] )
    )
RETURN
    COUNTROWS ( FILTER ( tab, [flag] = 1 ) )

table result.png

Después de comparar las visitas a la mesa, parece haber una falta de cierta lógica para juzgar la duplicación en la tabla.

Saludos
Yingjie Li

Si esta publicación ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

amitchandak
Super User
Super User

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.