Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowGet inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.
Mi tabla tiene este aspecto y en mi modelo tiene una relación 1:N con mi tabla de calendario de fecha a fecha:
Categoría | Fecha | Dimensión |
A | 1.1.2020 | Gato |
A | 3.2.2020 | Perro |
B | 1.1.2019 | Gato |
B | 1.3.2019 | Perro |
B | 1.6.2019 | Serpiente |
C | 1.1.2020 | Serpiente |
C | 2.1.2020 | Perro |
C | 3.1.2020 | Serpiente |
B | 1.1.2020 | Gato |
Quiero contar el número de categorías que tengo en cada dimensión para cada fecha que elijo filtrar para que la salida sea así para la fecha de hoy
Dimensión | Fecha | Recuento de categoría |
Perro | 22.4.2020 | 1 |
Gato | 22.4.2020 | 1 |
Serpiente | 22.4.2020 | 1 |
Pero cuando selecciono otra fecha, por ejemplo 1.st de febrero de 2020 el resultado sería este
Dimensión | Fecha | Recuento de categoría |
Perro | 1.2.2020 | 0 |
Gato | 1.2.2020 | 2 |
Serpiente | 1.2.2020 | 1 |
Así que básicamente necesito contar las filas de mi tabla Calendar que se encuentran entre dos fechas correspondientes a las columnas Categoría y Dimensión.
¿Cómo puedo lograr este USind DAX?
Lo que he intentado hasta ahora es usar FILTER() y ERLIER(), pero mis habilidades DAX no están a la altura de la tarea que me temo.
Hola, @Yggdrasill
Me pregunto si hay algo mal con el resultado esperado en 2/1/2020. Supongo que desea calcular el número de categorías distintas donde la fecha es menor o igual que la fecha seleccionada para cada dimensión.
Mesa:
Calendario:
Calendar = CALENDARAUTO()
No hay ninguna relación entre dos tablas.
Puede crear una medida como se muestra a continuación.
Count =
var _date = SELECTEDVALUE('Calendar'[Date])
var _dimension = SELECTEDVALUE('Table'[Dimension])
return
CALCULATE(
DISTINCTCOUNT('Table'[Category]),
FILTER(
ALL('Table'),
'Table'[Dimension] = _dimension&&
'Table'[Date]<=_date
)
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por tomarse el tiempo Allan, pero esto no parece devolver la salida deseada.
Por 1.st de febrero, los casos activos deben ser 2 gatos y 1 serpiente. (Tenga en cuenta que estoy usando el formato dd.mm.yyyy)
Además, la medida no parece funcionar.
Mi mesa es realmente así:
Caso | Fecha | Estado de | Estado para |
A | 1.1.2020 | Nuevo | Abierto |
A | 20.1.2020 | Abierto | Cerrado |
B | 1.1.2020 | Nuevo | Abierto |
B | 13.1.2020 | Abierto | Pendiente |
B | 1.2.2020 | Pendiente | Cerrado |
Necesito contar las fechas entre cada cambio de estado para cada caso y ser capaz de visualizarlo así para todos los casos
Hola, @Yggdrasill
Basándome en sus datos, creé datos para reproducir su escenario.
Mesa:
Prueba:
Calendario:
Calendar = CALENDARAUTO()
Puede crear una medida como se muestra a continuación.
CountValue =
var _date = SELECTEDVALUE('Calendar'[Date])
var _status = SELECTEDVALUE(Test[Status])
var tab =
SUMMARIZE(
ALLSELECTED('Table'),
'Table'[Case],
"MaxDate",
var c = [Case]
return
CALCULATE(
MAX('Table'[Date]),
FILTER(
ALLSELECTED('Table'),
'Table'[Case] =c&&
'Table'[Date]<=_date
)
)
)
var newtab =
ADDCOLUMNS(
tab,
"Status",
var c = [Case]
var md = [MaxDate]
return
MAXX(
FILTER(
ALLSELECTED('Table'),
'Table'[Case] = c&&
'Table'[Date] = md
),
[Status to]
)
)
var result =
COUNTROWS(
FILTER(
newtab,
[Status] = _status
)
)
return
IF(
ISBLANK(result),
0,
result
)
Resultado:
Saludos
Allan
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias Allan ! Esto es algo que puedo usar ! ¡Brillante!
Sin embargo, quiero señalar que los cálculos son lentos porque tengo más de 2000 casos y un lapso de más de 5 años.
Además, el recuento se rompe cuando uso la hieraría de fecha en los objetos visuales.
¿Es posible utilizar el final de cada fecha como punto de quiebre cuando quiero subir la granularidad de la fecha?
Por ejemplo, si utilizo un gráfico de barras con Años, ¿vería el recuento final de cada año?
Hola, @Yggdrasill
Puede modificar 'var _date á SELECTEDVALUE('Calendar'[Date])' como 'var _date ' MAX('Calendar'[Date])' y hacer que otros códigos no cambien.
CountValue =
var _date = MAX('Calendar'[Date])
var _status = SELECTEDVALUE(Test[Status])
var tab =
SUMMARIZE(
ALLSELECTED('Table'),
'Table'[Case],
"MaxDate",
var c = [Case]
return
CALCULATE(
MAX('Table'[Date]),
FILTER(
ALLSELECTED('Table'),
'Table'[Case] =c&&
'Table'[Date]<=_date
)
)
)
var newtab =
ADDCOLUMNS(
tab,
"Status",
var c = [Case]
var md = [MaxDate]
return
MAXX(
FILTER(
ALLSELECTED('Table'),
'Table'[Case] = c&&
'Table'[Date] = md
),
[Status to]
)
)
var result =
COUNTROWS(
FILTER(
newtab,
[Status] = _status
)
)
return
IF(
ISBLANK(result),
0,
result
)
Saludos
Allan
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola Puede utilizar la categoría como valor en su objeto visual y seleccionar su agregación como recuento . Alternativamente, cree una nueva medida como
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!
Check out the February 2025 Power BI update to learn about new features.