Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
jiri81
Frequent Visitor

Recuento de filas en función de un filtro/fecha

Hola
Me estoy perdiendo un poco. Para un objeto visual específico, necesito calcular la solicitud de servicio creada en un período de tiempo específico, así como la solicitud de servicio escalada al equipo de diseño. Esto se usará para mostrar en un objeto visual (por lo que tengo la tabla de fechas no relacionada) desde el momento en que se crean las solicitudes de servicio y se escalan al equipo de diseño será diferente (día, mes, año). Además, estoy planeando calcular una relación para mostrar tickets para diseñar métricas de escalado


La tabla de ejemplo tiene el siguiente aspecto:

Tabla de solicitudes de servicio
ID de solicitud de servicio; ocurrió; se intensificó al diseño;


donde el ocurrido y escalado al diseño contiene la fecha

También tengo una tabla de calendario no relacionada
Fecha
Fecha; WeekNumber


Estoy a punto de usar DAX, pero parece que me estoy equivocando


Recuento de solicitudes de servicio se han producido: CALCULATE(COUNTA('Tabla de solicitudes de servicio'[ID de solicitud de servicio]]), FILTER(ALLSELECTED('Tabla de solicitudes de servicio'), 'Tabla de solicitud de servicio'[Se produjo],SELECTEDVALUE('Fecha'[Fecha])))

Y

Recuento de solicitudes de servicio escalado a diseño : CALCULATE(COUNTA('Service request table'[Service Request ID]]), FILTER(ALLSELECTED('Service request table'), 'Service request table'[escalated to design]-SELECTEDVALUE('Date'[Date])))

A continuación, tengo un objeto visual con el eje FECHA (de la tabla no relacionada) pero no muestra nada. La misma tarjeta de ingenio cuando aplico filtro. Estoy luchando para entender DAX y la lógica de filtro DATE.

Apreciamos si puedes señalarme a la dirección apropiada con esto.

Salud

Jiri

1 ACCEPTED SOLUTION
BA_Pete
Super User
Super User

Hola @jiri81 ,

En primer lugar, debe relacionar la tabla de calendario con la tabla de hechos.

Arrastre [Fecha] del calendario a [ocurrió]: esto debería aplicar una relación ACTIVE.

A continuación, arrastre [Fecha] del calendario a [escalado al diseño] - esto debe aplicar una relación INACTIVE.

Ambas relaciones deben mostrarse como calendario es el lado UNO y la tabla de solicitud de servicio es el lado muchos.

A continuación, configure estas medidas:

_requestsOccurred = DISTINCTCOUNT('Service request table'[Service Request ID])

_requestsEscalated =
CALCULATE(
  DISTINCTCOUNT('Service request table'[Service Request ID]),
  USERELATIONSHIP('Service request table'[escalated to design], Calendar[Date])
)

Utilice el número de fecha/semana de la tabla Calendario como eje visual.

Ahora debería poder utilizar ambas medidas en el mismo objeto visual y ver sus valores dentro de un período de tiempo común.



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




View solution in original post

4 REPLIES 4
BA_Pete
Super User
Super User

Hola @jiri81 ,

En primer lugar, debe relacionar la tabla de calendario con la tabla de hechos.

Arrastre [Fecha] del calendario a [ocurrió]: esto debería aplicar una relación ACTIVE.

A continuación, arrastre [Fecha] del calendario a [escalado al diseño] - esto debe aplicar una relación INACTIVE.

Ambas relaciones deben mostrarse como calendario es el lado UNO y la tabla de solicitud de servicio es el lado muchos.

A continuación, configure estas medidas:

_requestsOccurred = DISTINCTCOUNT('Service request table'[Service Request ID])

_requestsEscalated =
CALCULATE(
  DISTINCTCOUNT('Service request table'[Service Request ID]),
  USERELATIONSHIP('Service request table'[escalated to design], Calendar[Date])
)

Utilice el número de fecha/semana de la tabla Calendario como eje visual.

Ahora debería poder utilizar ambas medidas en el mismo objeto visual y ver sus valores dentro de un período de tiempo común.



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Gracias por tu respuesta,,

Estaba tratando de evitar el uso de la relación porque cada vez que lo hago, "rompe" la jerarquía de datos en el [Ocurrido]. Empaqué Activo, así como Inactivo comprar siempre lo mismo. Esto aparentemente rompe los informes existentes y los objetos visuales. ¿Hay alguna manera de evitar esto? ¿Debo crear [Copia de ocurrido] para hacerlo?

A pesar de todo, estaba jugando con esto y todavía no obteniendo el resultado esperado. Lo intentaré de nuevo, pero apreciará cualquier orientación al respecto.

Editar después de un golpe de té:

Mi tabla de fechas tiene la fecha en formato es 1.1.2020 0:00:00

Mientras que mi ocurrió siempre está en 1.1.2020 10:30:15 o lo que sea que era la hora exacta. Voy a añadir columnas y quitarme el tiempo

Jiri

jiri81
Frequent Visitor

,

todos trabajando ahora. Tuve que revertir los campos de datos de la tabla de hechos al comienzo del día para que coincida con mi calendario.

Muchas gracias por que me apuntas a la dirección. No pude entender cómo usar la relación en DAX y su ejemplo simple me ayudó a entenderla. Ya estoy planeando usar esto para un cálculo de trabajo pendiente (creado frente a puntuación cerrada).

Salud

Jiri

Hola @jiri81 ,

Me alegro de que todo funcione.

Sólo algunos consejos sobre las mejores prácticas:

- SIEMPRE incluya una tabla de calendario adecuada en sus modelos de informe, relacione esto con sus tablas de hechos y utilice los valores de Calendario como ejes visuales.

- Desactivar la inteligencia de tiempo aquí (y también recomendaría desactivar las relaciones de detección automática):

BA_Pete_1-1606382456546.png

- Marque su tabla de calendario como una tabla de fechas aquí:

BA_Pete_2-1606382589196.png

Hay una serie de razones por las que esta práctica es la mejor práctica:

1) Las jerarquías que usted dijo que se rompió son en realidad todas las tablas de fechas individuales en el fondo. Si el modelo tiene una amplia gama de fechas, esto puede hacer que el tamaño de datos del modelo sea muy grande muy rápidamente.

2) Una gran cantidad de (tal vez todos) funciones de inteligencia de tiempo, por ejemplo SAMEPERIODLASTYEAR, DATESYTD etc. no funcionan a menos que se implementen utilizando fechas de tabla de fechas adecuadas como argumentos.

3) Usando una tabla de calendario adecuada, puede personalizar altamente sus propias jerarquías y períodos de tiempo, y no limitarse a sólo Año, Trimestre, Mes.

Aquí hay un ejemplo de la tabla de calendario que utilizo en todos mis modelos. Es posible que los campos Financieros no funcionen para usted (se ejecutan del 1 de abril al 31 de marzo), pero se pueden editar con la suficiente facilidad para adaptarse al ejercicio de su empresa. En Power Query, vaya a Nuevo origen>Consulta en blanco y, a continuación, en Editor avanzado, pegue mi código sobre el código predeterminado. A continuación, tendrá un calendario completo para usar en el futuro si desea:

Dejar
  Declare acctChgDay variable
  AcctChgDay 10,
  Definir fecha.Hoy
  Date.Today - Date.From(DateTime.LocalNow()),
  Origen: Número.From(#date(Date.Year(Date.AddYears(Date.Today+#duration(275,0,0,0),-3)),4,1)).. Number.From(#date(Date.Year(Date.AddYears
(Date.Today+#duration(275,0,0,0),0)),3,31))
  convToTable á Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
  chgDateType ? Table.TransformColumnTypes(convToTable, ?"Column1", tipo date?),
  renCols ? Table.RenameColumns(chgDateType, ?"Column1", "date"-),
  addDateKey á Table.AddColumn(renCols, "dateKey", each Date.ToText([date], "yyyMMdd"), escriba text),
  addFinYear á Table.AddColumn(addDateKey, "finYear", each Date.Year([date]+#duration(275,0,0,0))),
  addRelativeFY á Table.AddColumn(addFinYear, "relativeFY", each [finYear] - Date.Year(Date.Today+#duration(275,0,0,0))),
  addFinPeriod á Table.AddColumn(addRelativeFY, "finPeriod", cada if Date.Month([date]) >-4 y, a continuación, Date.Month([date])-3 else Date.Month([date])+9),
  addFinYearPeriod ? Table.AddColumn(addFinPeriod, "finYearPeriod", cada [finYear]*100+[finPeriod]),
  addFinWeekKey ? Table.AddColumn(addFinYearPeriod, "finWeekKey", each Date.WeekOfYear(Date.AddWeeks([date],-13),Day.Monday)),
  addFinHY - Table.AddColumn(addFinWeekKey, "finHY", cada uno si [finPeriod] > 1 y [finPeriod] <-6 y luego "H1" más "H2"),
  addFinQtr á Table.AddColumn(addFinHY, "finQtr", cada uno si [finPeriod] > 1 y [finPeriod] <-3 y luego "Q1"
si [finPeriod] > 4 y [finPeriod] <-6 y luego "Q2"
si [finPeriod] > 7 y [finPeriod] <-9 y luego "Q3"
"Q4"),
  addMonthKey á Table.AddColumn(addFinQtr, "monthKey", each Date.Month([date])),
  addMonth á Table.AddColumn(addMonthKey, "month", each Text.Start(Date.MonthName([date]),3)),
  addMonthYear á Table.AddColumn(addMonth, "monthYear", each Text.Combine('[month], Text.End(Text.From(Date.Year
([fecha])),2) , " ")),
  addCurrentMonth á Table.AddColumn(addMonthYear, "currentMonth", cada uno if Date.Month(Date.Today) á Date.Month([date]) y Date.Year(Date.Today) á Date.Year([date]) y luego "CurrentMonth"
si [fecha] < Date.StartOfMonth(Date.Today) y luego "History" else "Future"),
  addRelativeMonth á Table.AddColumn(addCurrentMonth, "relativeMonth", each (Date.Year([date]) * 12 + [monthKey]) - (Date.Year(Date.Today) * 12 + Date.Month(Date.Today))),
  addDayKey ? Table.AddColumn(addRelativeMonth, "dayKey", each Date.DayOfWeek([date])),
  addDay ? Table.AddColumn(addDayKey, "day", each Text.Start(Date.DayOfWeekName([date]), 3)),
  addCurrentDay - Table.AddColumn(addDay, "currentDay", cada uno si Date.Today á [fecha] y luego "CurrentDay"
si [fecha] < Date.Today entonces "History" else "Future"),
  addDayType á Table.AddColumn(addCurrentDay, "dayType", cada uno si [día] á "Sat" o [día] á "Dom" y luego "Weekend" else "Weekday"),
  addDayView á Table.AddColumn(addDayType, "dayView", cada uno si [dayType] á "Fin de semana"
entonces nulo
else if [date] á Date.AddDays(Date.Today, -7)
luego "OneWeekAgo"
else if [day] á "Fri" y [date] á Date.AddDays(Date.Today, -3)
luego "LastWorkDay"
else if [date] á Date.AddDays(Date.Today, -1)
luego "LastWorkDay"
else si [fecha] - Date.Today
entonces "Hoy"
else if [day] á "Mon" y [date] á Date.AddDays(Date.Today, 5)
luego "NextWorkDay+3"
else if [day] á "Mon" y [date] á Date.AddDays(Date.Today, 4)
luego "NextWorkDay+2"
else if [day] á "Mon" y [date] á Date.AddDays(Date.Today, 3)
luego "NextWorkDay+1"
else if [day] á "Mar" y [fecha] - Date.AddDays(Date.Today, 5)
luego "NextWorkDay+3"
else if [day] á "Mar" y [fecha] - Date.AddDays(Date.Today, 4)
luego "NextWorkDay+2"
else if [day] á "Mie" y [fecha] - Date.AddDays(Date.Today, 5)
luego "NextWorkDay+3"
else if [date] á Date.AddDays(Date.Today, 1)
luego "NextWorkDay+1"
else if [date] á Date.AddDays(Date.Today, 2)
luego "NextWorkDay+2"
else if [date] á Date.AddDays(Date.Today, 3)
luego "NextWorkDay+3"
otro nulo),
  addCurrentPdAccts - Table.AddColumn(addDayView, "currentPdAccts", cada uno si
(Date.IsInPreviousMonth([date]) y Date.Day(Date.Today) < acctChgDay)
O
(Date.Month([date]) á Date.Month(Date.Today) y Date.Year(Date.Today) á Date.Year([date]) y Date.Day(Date.Today) < acctChgDay)
entonces "Pd actual"
Más
Si
(Date.Month([date]) á Date.Month(Date.Today) y Date.Year(Date.Today) á Date.Year([date]) y Date.Day(Date.Today) >- acctChgDay)
entonces "Pd actual"
Más
Si
[fecha] < Date.Today
entonces "Historia"
"Futuro"),
  addPeriodTypeAccts á Table.AddColumn(addCurrentPdAccts, "periodTypeAccts", cada uno si [currentPdAccts] á "History" y luego "Actual" else "Forecast"),
  chgAllTypes ? Table.TransformColumnTypes(addPeriodTypeAccts, ?"date", tipo date, "finYear", tipo text, "finPeriod", Int64.Type,"finYearPeriod", Int64.Type,Int64.Type, "finHY", escriba text, "finQtr", escriba text, "mes", escriba text, "relativeFY", escriba text, ?"currentPdAccts", escriba text, ?"periodTypeAccts", escriba text, ?"monthYear", escriba text,", int64.Type', ."day", Int64.Type, "dayView", escriba text, "dayType", escriba text, "finWeekKey", Int64.Type, "currentMonth", escriba text, "relativeMonth", Int64.Type, "currentDay", escriba text?
En
  chgAllTypes



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors