The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event: Join us in Stockholm, September 24-27, 2024.
Save €200 with code MSCUST on top of early bird pricing!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the August 2024 Power BI update to learn about new features.