Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Hola y gracias de antemano por su ayuda. Estoy buscando una manera de poder obtener dinámicamente el recuento de distintos individuos por grupos de edad (<18, 18-64, 65+) en función de su edad en su fecha de servicio más reciente dentro de un período de tiempo seleccionado en una segmentación.
Idealmente, el recuento de las categorías de edad debe ser un recuento distinto de 'ServiceTable'[ID].
Tengo dos tablas con la siguiente información (más una tabla de calendario basada en la fecha de servicio en ServiceTable):
1. Tabla de servicio
IDENTIFICACIÓN | Fecha de servicio |
A | 1/1/2021 |
A | 2/1/2021 |
A | 5/1/2021 |
B | 2/1/2021 |
B | 3/1/2021 |
C | 3/1/2021 |
C | 4/1/2021 |
C | 5/1/2021 |
D | 2/1/2021 |
2. Tabla de clientes
IDENTIFICACIÓN | EDAD |
A | 4/1/2003 |
B | 2/15/1956 |
C | 3/15/1956 |
D | 1/1/1981 |
(en este ejemplo, la persona A cumple 18 años en 2021, las personas B y C cumplen 65 años en 2021, la persona D cumple 40 años en 2021)
Si una segmentación se estableciera para el 1/3/21 - el 1/5/21, esperaría ver lo siguiente:
AgeCat | Contar |
<18 | 0 |
18-64 | 1 |
65 + | 2 |
(ID A = 18-64, ID B&C = 65+)
Para una segmentación de datos establecida entre 1/1/21 y 3/1/21:
AgeCat | Contar | |
<18 | 1 | (Identificación A) |
18-64 | 2 | (ID C,D) |
65 + | 1 | (Identificación B) |
Y para una cortadora 1/1/21 - 5/1/21:
AgeCat | Contar | |
<18 | 0 | |
18-64 | 2 | (ID A,D) |
65 + | 2 | (ID B,C) |
¡Gracias, @v-kaiyue-msft ! ¿Podrías ayudarme a entender lo que estás haciendo? Parece que está creando una nueva tabla que une ID + DOB a SD en ID = ID2; y luego atribuir los meses a las diferentes categorías de edad; Luego, para cada categoría de edad, está contando el número de personas que caen en esa categoría.
Sin embargo, no estoy seguro de a qué se supone que hace referencia 'Table'[Value], pero me está dando un error. También me pregunto cómo esto "sabe" seleccionar la fecha de servicio más reciente.
¡Agradezco su ayuda!
Hola @user16940356 ,
Lamento haber olvidado mencionar en mi respuesta anterior que la tabla es la tabla de cálculo creada que contiene datos para diferentes categorías de edad con el fin de contar diferentes clientes.
CROSSJOIN (
SELECTCOLUMNS (
'ClientTable'.
"_DOB", 'ClientTable'[DOB]
),
SELECTCOLUMNS (
'ServiceTable'.
"_SD", 'ServiceTable'[SERVICE DATE]
)
)
Esta expresión anterior devuelve el producto cartesiano de todas las filas de ClientTable y ServiceTable. Las columnas de la tabla resultante son todas las columnas de ambas tablas.
El propósito de agregar un filtro a la capa externa es permitir que las dos tablas se conecten por ID, de forma similar a una clave principal.
La segmentación contiene la fecha de serviceTable y su filtrado afecta al resultado de la combinación de las dos tablas, lo que a su vez afecta al recuento general.
Aquí está la documentación de la función, espero que pueda ayudarte:
Función CROSSJOIN (DAX) - DAX | Microsoft Learn
Función SUMMARIZE (DAX) - DAX | Microsoft Learn
Función SELECTCOLUMNS (DAX) - DAX | Microsoft Learn
Si su período actual no se refiere a esto, por favor aclárelo en una respuesta de seguimiento.
Saludos
Clara Gong
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @user16940356 ,
Cree una medida, escriba una expresión dax.
MEASURE =
VAR _newvalue =
SELECTEDVALUE ( 'Table'[Value] )
VAR _vtable =
SUMMARIZE (
SELECTCOLUMNS (
FILTER (
CROSSJOIN (
SELECTCOLUMNS (
'ClientTable',
"_ID", 'ClientTable'[ID],
"_DOB", 'ClientTable'[DOB]
),
SELECTCOLUMNS (
'ServiceTable',
"_ID2", 'ServiceTable'[ID],
"_SD", 'ServiceTable'[Service Date]
)
),
[_ID] = [_ID2]
),
[_ID],
"_Age",
IF (
DATEDIFF ( [_DOB], [_SD], MONTH ) < 216,
"<18",
IF (
DATEDIFF ( [_DOB], [_SD], MONTH ) >= 216
&& DATEDIFF ( [_DOB], [_SD], MONTH ) < 780,
"18-64",
IF ( DATEDIFF ( [_DOB], [_SD], MONTH ) >= 780, "65+" )
)
)
),
[_ID],
[_Age]
)
RETURN
SWITCH (
_newvalue,
"<18", COUNTX ( FILTER ( _vtable, [_Age] = "<18" ), [_ID] ),
"18-64", COUNTX ( FILTER ( _vtable, [_Age] = "18-64" ), [_ID] ),
"65+", COUNTX ( FILTER ( _vtable, [_Age] = "65+" ), [_ID] )
)
Si su período actual no se refiere a esto, por favor aclárelo en una respuesta de seguimiento.
Saludos
Clara Gong
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |