Forum Discussion
Consulta SQL a DAX
Hola @skiper ,
Por favor, compruebe:
Percent foreign songs played =
VAR maxversion =
CALCULATE ( MAX ( 'TrackData'[Version] ) )
VAR p =
CALCULATETABLE (
DISTINCT ( 'Episode'[Id] ),
FILTER (
'Episode',
'Episode'[TablaTjansteId]
IN CALCULATETABLE (
DISTINCT ( 'ProgramService'[TablaTjansteId] ),
'ProgramService'[Name] = "P3"
)
&& 'Episode'[Datum] >= DATE ( 2020, 3, 9 )
&& 'Episode'[Datum] <= DATE ( 2020, 3, 16 )
&& HOUR ( [StartTidUtc] ) >= 5
&& ROUNDDOWN ( 'Episode'[SlutTidUtc], 0 ) = ROUNDDOWN ( 'Episode'[StartTidUtc], 0 )
)
)
VAR tid =
CALCULATETABLE (
DISTINCT ( 'MusicListRow'[TrackId] ),
FILTER (
'MusicListRow',
'MusicListRow'[MusicListId]
IN CALCULATETABLE (
DISTINCT ( 'MusicList'[Id] ),
FILTER ( MusicList, 'MusicList'[EpisodeId] IN p )
)
)
)
VAR td =
FILTER (
'TrackData',
'TrackData'[TrackId] IN p
&& 'TrackData'[Version] = maxversion
&& 'TrackData'[Value] IN { "Ja", "SE" }
&& 'TrackData'[Name]
IN { "Gramark.Svensk", "GramarkLive.Svensk", "Musikbank.Swedish" }
)
RETURN
COUNTROWS ( FILTER ( td, NOT ( 'TrackData'[Value] IN { "Ja", "SE" } ) ) )
/ COUNTROWS ( td )
Percent swedish songs played =
VAR maxversion =
CALCULATE ( MAX ( 'TrackData'[Version] ) )
VAR p =
CALCULATETABLE (
DISTINCT ( 'Episode'[Id] ),
FILTER (
'Episode',
'Episode'[TablaTjansteId]
IN CALCULATETABLE (
DISTINCT ( 'ProgramService'[TablaTjansteId] ),
'ProgramService'[Name] = "P3"
)
&& 'Episode'[Datum] >= DATE ( 2020, 3, 9 )
&& 'Episode'[Datum] <= DATE ( 2020, 3, 16 )
&& HOUR ( [StartTidUtc] ) >= 5
&& ROUNDDOWN ( 'Episode'[SlutTidUtc], 0 ) = ROUNDDOWN ( 'Episode'[StartTidUtc], 0 )
)
)
VAR tid =
CALCULATETABLE (
DISTINCT ( 'MusicListRow'[TrackId] ),
FILTER (
'MusicListRow',
'MusicListRow'[MusicListId]
IN CALCULATETABLE (
DISTINCT ( 'MusicList'[Id] ),
FILTER ( MusicList, 'MusicList'[EpisodeId] IN p )
)
)
)
VAR td =
FILTER (
'TrackData',
'TrackData'[TrackId] IN p
&& 'TrackData'[Version] = maxversion
&& 'TrackData'[Value] IN { "Ja", "SE" }
&& 'TrackData'[Name]
IN { "Gramark.Svensk", "GramarkLive.Svensk", "Musikbank.Swedish" }
)
RETURN
COUNTROWS ( FILTER ( td, 'TrackData'[Value] IN { "Ja", "SE" } ) )
/ COUNTROWS ( td )
Saludos
Icey
Si este postAyuda, entonces por favor considereAcéptelo como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.
- Anonymous6 years agoNot applicable
Muchas gracias por su ayuda. Lo intenté, pero me da Blank. Corrí diferentes variables por separado y se ejecuta, pero en su conjunto da un resultado en blanco.
He agregado una columna Name que faltaba en la tabla "TrackData". y subió un nuevo archivo que enlace está aquí
https://1drv.ms/u/s!AgrolwBG08XGjRgvhU_hIj17ZMwI?e=stn4Y1
También he creado dos columnas de la última parte de la consulta que es
TrackData'[Valor] IN á "Ja", "SE"
Pero soy capaz de resolver sólo la mitad de la consulta con este método. Puedes intentarlo si puedes. o seguiré trabajando en esto con la ayuda de su consulta..
Gracias
- Icey6 years agoCommunity Support
Hola @skiper ,
Según mi prueba, la causa es que no hay registros que satisfagan las condiciones al mismo tiempo.
Saludos
Icey
Si este postAyuda, entonces por favor considereAcéptelo como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.
- Anonymous6 years agoNot applicable
Muchas gracias por doble cheque
Voy a tratar de cargar más filas para comprobar si hay registro, porque hay más de 2 millones de registros y sólo cargué medio millón,
¿Puede sugerirme cómo pensar así como lo hizo en su solución. ? Proceso de pensamiento ? porque no era capaz de pensar así
cualquier curso o sugerenciapara mejorar la forma de pensar en cómo crear DAX a partir de consultaSQL.