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.
Tengo una estructura de datos muy compleja y muy extensa, por lo que solo he incluido las tablas que me preocupan:
Vea las tablas a continuación (disculpas por la captura de pantalla, no pude hacer que se pegara de otra manera)
Así que estoy buscando usar dax para proporcionar el valor de la bandera para la columna InsideSystemLoginFlag dentro de CallTable.
Esencialmente, quiero saber si el cliente realizó una llamada durante su sesión de SystemLogin (como se muestra en SystemLoginTable). Como puede ver en las 3 de las 4 llamadas anteriores, se encontraban dentro de la sesión de inicio de sesión del cliente.
Así que la lógica sería algo así como SI CallStartTime ENTRE SystemLogin y SystemLogout THEN 1 ELSE 0
Pero sorprendentemente esto es muy difícil de lograr. Se suma a la complejidad ya que necesita ir a través de la tabla de búsqueda, y ahí es donde estoy luchando.
¿Se puede lograr esto creando una nueva columna de indicador con una simple consulta DAX?
Gracias @lbendlin por los punteros, vea los datos a continuación en formato de tabla.
Y sí, los resultados deben verse afectados por los filtros, lo cual es bastante importante.
Ive también destacó los valores esperados en negrita.
callTable
ID de cliente | callid | CallStartTime | InsideSystemLoginFlag |
1 | ci_2g34 | 05/04/2022 00:12:45 | 1 |
2 | ci_g6363 | 06/04/2022 16:17:45 | 1 |
3 | ci_4g45 | 06/04/2022 21:15:45 | 0 |
4 | ci_345fg | 06/04/2022 10:12:45 | 1 |
SystemLoginTable
systemIniciar sesión | SystemLogout | C2ID |
05/04/2022 07:10:45 | 05/04/2022 17:19:45 | 14 |
06/04/2022 09:17:45 | 06/04/2022 18:17:45 | 15 |
06/04/2022 00:10:45 | 06/04/2022 00:19:45 | 87 |
06/04/2022 05:12:45 | 06/04/2022 11:15:45 | 84 |
CustomerLookUpTable
C2ID | ID de cliente |
87 | 1 |
15 | 2 |
14 | 3 |
84 | 4 |
Puede agregar una columna personalizada en la tabla de llamadas para obtener la etiqueta de resultado en función de sus condiciones:
Tag =
VAR c2ID =
LOOKUPVALUE ( Lookup[C2ID], Lookup[CustomerID], T1[customerID] )
VAR result =
COUNTROWS (
FILTER (
SystemLogin,
SystemLogin[C2ID] = c2ID
&& AND (
call[CallStartTime] >= SystemLogin[systemLogin],
call[CallStartTime] <= SystemLogin[SystemLogout]
)
)
) > 0
RETURN
IF ( result, 1, 0 )
Saludos
Xiaoxin Sheng
Gracias, esto es 80% lo que estoy buscando, sin embargo, estoy recibiendo el siguiente error:
Sospecho que hay múltiples entradas de inicio de sesión en la tabla SystemLogin que también pueden superponerse entre sí (el usuario puede iniciar sesión a través de más de un dispositivo) por lo que una llamada puede abarcar múltiples inicios de sesión para ese día. ¿Podemos hacer que esto funcione independientemente de cuántos inicios de sesión diferentes ese día, ya que solo me interesa si la llamada fue en una sesión (cualquiera), y no me importa cuántas sesiones, etc.?
Proporcione datos de muestra desinfectados que cubran completamente su problema.
Muestre el resultado esperado en función de los datos de muestra que proporcionó.
¿El resultado es inmutable o puede verse afectado por las opciones de filtro?
Proporcione datos de muestra desinfectados que cubran completamente su problema. Si pega los datos en una tabla en su publicación o utiliza uno de los servicios de archivos, será más fácil ayudarlo. No puedo usar capturas de pantalla de sus datos de origen.
Muestre el resultado esperado en función de los datos de muestra que proporcionó. Las capturas de pantalla del resultado esperado están bien.
https://community.powerbi.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447523
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |