March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
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.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.