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.
Hola a todos,
Esperaba que alguien pudiera ayudarme con algo en lo que estoy atrapado, por favor.
Somos un proveedor de atención domiciliaria y uno de los KPI que nos gustaría rastrear es el número de días que los residentes se alojaron en el hogar (llamémoslo ResDays) pero soy nuevo en PowerBI y en un poco de una pérdida con cómo calcularlo.
El informe que estoy construyendo tiene 3 tablas que creo que son relevantes para esta pregunta: DateTable, cv_BI_Occupancy y cv_facilities. Se establecen de la siguiente manera:
cv_facilities:
Nombre | Dirección |
Hogar de cuidado A | 123 XYZ |
Hogar de cuidado B | 456 ABC |
Hogar de cuidado C | 789 DEF |
DateTable (fechas del 1 de enero de 2020 al 31 de diciembre de 2021):
Fecha | MonthYear | MonthYearNo | Ejercicio financiero |
01 de enero de 2020 | Ene 2020 | 202001 | 2020 |
02 de enero de 2020 | Ene 2020 | 202001 | 2020 |
03 de enero de 2020 | Ene 2020 | 202001 | 2020 |
04 de enero de 2020 | Ene 2020 | 202001 | 2020 |
05 de enero de 2020 | Ene 2020 | 202001 | 2020 |
cv_BI_Occupancy (el sistema genera una fecha de licencia de 31 de diciembre de 2999 para las habitaciones que estén ocupadas actualmente):
Sitio | RoomNo | TypeOfStay | Servicio | Llegada | LeaveDate |
Hogar de cuidado A | 114 | Permanente | AL | 21 de septiembre de 2012 | 01 de febrero de 2020 |
Hogar de cuidado A | 216 | Permanente | el | 16 de diciembre de 2019 | 18 de enero de 2020 |
Hogar de cuidado A | 117 | Permanente | AL | 23 de marzo de 2019 | 02 de enero de 2020 |
Hogar de cuidado A | 214 | Permanente | el | 13 de octubre de 2019 | 16 de marzo de 2020 |
Hogar de cuidado A | G01 | Permanente | AL | 16 de abril de 2015 | 31 de diciembre de 2999 |
Hogar de cuidado A | 114 | Permanente | AL | 29 de septiembre de 2020 | 31 de diciembre de 2999 |
Hogar de cuidado A | 207 | Permanente | AL | 30 de diciembre de 2019 | 31 de diciembre de 2999 |
Hogar de cuidado B | 215 | Permanente | AL | 30 de enero de 2020 | 25 de agosto de 2020 |
Hogar de cuidado B | 111 | Permanente | el | 13 de octubre de 2014 | 08 de octubre de 2020 |
Hogar de cuidado B | 228 | Permanente | AL | 19 de junio de 2020 | 17 de diciembre de 2020 |
Hogar de cuidado B | 130 | Permanente | el | 03 de mayo de 2013 | 30 de noviembre de 2020 |
Hogar de cuidado B | 304 | Permanente | AL | 17 de enero de 2019 | 31 de diciembre de 2999 |
Hogar de cuidado B | 404 | Permanente | AL | 06 de diciembre de 2018 | 31 de diciembre de 2999 |
Hogar de cuidado B | 302 | Permanente | AL | 13 de febrero de 2020 | 31 de diciembre de 2999 |
Hogar de cuidado C | 118 | Permanente | AL | 08 de diciembre de 2019 | 06 de noviembre de 2020 |
Hogar de cuidado C | 112 | Permanente | AL | 18 de septiembre de 2013 | 09 de mayo de 2020 |
Hogar de cuidado C | 120 | Permanente | AL | 18 de marzo de 2020 | 25 de diciembre de 2020 |
Hogar de cuidado C | 113 | Permanente | AL | 15 de febrero de 2012 | 08 de enero de 2020 |
Hogar de cuidado C | 003 | Permanente | AL | 01 de septiembre de 2020 | 31 de diciembre de 2999 |
Hogar de cuidado C | 310 | Permanente | el | 22 de octubre de 2020 | 31 de diciembre de 2999 |
Hogar de cuidado C | 227 | Permanente | AL | 15 de junio de 2020 | 31 de diciembre de 2999 |
Las relaciones establecidas son las siguientes:
DateTable[Fecha] a cv_BI_Occupancy[Fecha de salida] - 1 a muchos
cv_facilities[nombre] a cv_BI_Occupancy [Sitio] - 1 a muchos
El informe que estoy tratando de crear será para un hogar de cuidado en un momento dado, y por un período en un momento dado por lo que hay dos segmentaciones sincronizadas con todas las páginas, que son DateTable[MonthYear] y cv_facilities[name]. Mostrará información financiera y no financiera para que este cálculo de ResDays solo forme una parte pequeña pero importante del informe general.
He replicado en Excel lo que esperaría que mis resultados fueran durante dos períodos aleatorios, así como cómo se compensaría de la tabla anterior:
Días de Residencia en Julio | Días de Residencia en Noviembre | |
Hogar de cuidado A | 62 | 90 |
Hogar de cuidado B | 217 | 150 |
Hogar de cuidado C | 93 | 126 |
Sitio | RoomNo | TypeOfStay | Servicio | Llegada | LeaveDate | Jul 2020 | Nov 2020 |
Hogar de cuidado A | 114 | Permanente | AL | 21 de septiembre de 2012 | 01 de febrero de 2020 | 0 | 0 |
Hogar de cuidado A | 216 | Permanente | el | 16 de diciembre de 2019 | 18 de enero de 2020 | 0 | 0 |
Hogar de cuidado A | 117 | Permanente | AL | 23 de marzo de 2019 | 02 de enero de 2020 | 0 | 0 |
Hogar de cuidado A | 214 | Permanente | el | 13 de octubre de 2019 | 16 de marzo de 2020 | 0 | 0 |
Hogar de cuidado A | G01 | Permanente | AL | 16 de abril de 2015 | 31 de diciembre de 2999 | 31 | 30 |
Hogar de cuidado A | 116 | Permanente | AL | 29 de septiembre de 2020 | 31 de diciembre de 2999 | 0 | 30 |
Hogar de cuidado A | 207 | Permanente | AL | 30 de diciembre de 2019 | 31 de diciembre de 2999 | 31 | 30 |
Hogar de cuidado B | 215 | Permanente | AL | 30 de enero de 2020 | 25 de agosto de 2020 | 31 | 0 |
Hogar de cuidado B | 111 | Permanente | el | 13 de octubre de 2014 | 08 de octubre de 2020 | 31 | 0 |
Hogar de cuidado B | 228 | Permanente | AL | 19 de junio de 2020 | 17 de diciembre de 2020 | 31 | 30 |
Hogar de cuidado B | 130 | Permanente | el | 03 de mayo de 2013 | 30 de noviembre de 2020 | 31 | 30 |
Hogar de cuidado B | 304 | Permanente | AL | 17 de enero de 2019 | 31 de diciembre de 2999 | 31 | 30 |
Hogar de cuidado B | 404 | Permanente | AL | 06 de diciembre de 2018 | 31 de diciembre de 2999 | 31 | 30 |
Hogar de cuidado B | 302 | Permanente | AL | 13 de febrero de 2020 | 31 de diciembre de 2999 | 31 | 30 |
Hogar de cuidado C | 118 | Permanente | AL | 08 de diciembre de 2019 | 06 de noviembre de 2020 | 31 | 6 |
Hogar de cuidado C | 112 | Permanente | AL | 18 de septiembre de 2013 | 09 de mayo de 2020 | 0 | 0 |
Hogar de cuidado C | 120 | Permanente | AL | 18 de marzo de 2020 | 25 de diciembre de 2020 | 31 | 30 |
Hogar de cuidado C | 113 | Permanente | AL | 15 de febrero de 2012 | 08 de enero de 2020 | 0 | 0 |
Hogar de cuidado C | 003 | Permanente | AL | 01 de septiembre de 2020 | 31 de diciembre de 2999 | 0 | 30 |
Hogar de cuidado C | 310 | Permanente | el | 22 de octubre de 2020 | 31 de diciembre de 2999 | 0 | 30 |
Hogar de cuidado C | 227 | Permanente | AL | 15 de junio de 2020 | 31 de diciembre de 2999 | 31 | 30 |
Puedo crear una columna en la tabla cv_BI_Occupancy con un cálculo que me da las cifras correctas si codigo duro en una fecha de inicio y finalización como esta:
Solved! Go to Solution.
No @T_Double_U ,
Que yo sepa, puede eliminar el relationhip entre la tabla Date y cv_BI_Occupancy tabla para poder usar DateTable[Date] para Slicer.
A continuación, utilice la siguiente fórmula para medir la creata:
1. en cv_BI_Occupancy mesa
RESIDENT DAYS =
VAR _STARTDATE =
MIN ( 'Date'[Date] )
VAR _ENDDATE =
MAX ( 'Date'[Date] )
RETURN
IF (
MAX ( 'cv_BI_Occupancy'[Arrival] ) > _ENDDATE,
0,
IF (
MAX ( 'cv_BI_Occupancy'[LeaveDate] ) < _STARTDATE,
0,
VALUE (
DATEDIFF (
MAX ( MAX ( 'cv_BI_Occupancy'[Arrival] ), _STARTDATE ),
MIN ( MAX ( cv_BI_Occupancy[LeaveDate] ), _ENDDATE ),
DAY
)
)
)
)
2. en cv_facilities mesa
Measure =
SUMX ( 'cv_BI_Occupancy', [RESIDENT DAYS] )
La salida final se muestra a continuación:
Por favor, eche un vistazo al archivo pbix aquí.
Saludos
Eyelyn Qin
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola a todos
Gracias por la ayuda y los archivos de ejemplo! Voy a echar un vistazo en los próximos días y volver para confirmar que está funcionando como se esperaba.
¡Feliz Año Nuevo!
No @T_Double_U ,
Que yo sepa, puede eliminar el relationhip entre la tabla Date y cv_BI_Occupancy tabla para poder usar DateTable[Date] para Slicer.
A continuación, utilice la siguiente fórmula para medir la creata:
1. en cv_BI_Occupancy mesa
RESIDENT DAYS =
VAR _STARTDATE =
MIN ( 'Date'[Date] )
VAR _ENDDATE =
MAX ( 'Date'[Date] )
RETURN
IF (
MAX ( 'cv_BI_Occupancy'[Arrival] ) > _ENDDATE,
0,
IF (
MAX ( 'cv_BI_Occupancy'[LeaveDate] ) < _STARTDATE,
0,
VALUE (
DATEDIFF (
MAX ( MAX ( 'cv_BI_Occupancy'[Arrival] ), _STARTDATE ),
MIN ( MAX ( cv_BI_Occupancy[LeaveDate] ), _ENDDATE ),
DAY
)
)
)
)
2. en cv_facilities mesa
Measure =
SUMX ( 'cv_BI_Occupancy', [RESIDENT DAYS] )
La salida final se muestra a continuación:
Por favor, eche un vistazo al archivo pbix aquí.
Saludos
Eyelyn Qin
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @Eyelyn9 espero que no te importe que haga una pregunta de seguimiento aquí.
Si fuera a tratar de usar el mismo método para calcular los días unitarios en lugar de los días de residencia, tendría que omitir algunas filas duplicadas. Imagine 2 personas compartiendo una habitación para la duración completa de un período de 30 días, la medida en este momento calcularía 60 días ocupados ya que cada persona tendría su propia entrada en el sistema, lo que sería perfecto para mi consulta original, sin embargo, si quisiera saber cuántos días esa habitación específica estaba ocupada, me gustaría que la solución fuera sólo 30 días.
Este es un ejemplo:
Sitio | RoomNo | TypeOfStay | Servicio | Llegada | LeaveDate | Jul 2020 | Nov 2020 |
Hogar de cuidado A | 114 | Permanente | AL | 21 de septiembre de 2019 | 01 de octubre de 2020 | 31 | 0 |
Hogar de cuidado A | 114 | Permanente | AL | 21 de septiembre de 2019 | 01 de enero de 2021 | 0 | 30 |
Estaba pensando que sería capaz de copiar las medidas y simplemente ajustar un par de cosas, así que ¿es esta una enmienda fácil de hacer o hay una solución completamente nueva que se necesita?
Además, si es más fácil estoy más que feliz de crear una nueva publicación en lugar de volver a abrir un problema antiguo y resuelto.
Gracias de antemano!
Gracias Evelyn - que funciona perfectamente. Claramente estaba siendo demasiado testarudo con tratar de mantener el formato de segmentación!
Exactamente como lo estoy haciendo. Y como sé, tal vez sea la única manera.
Hola @T_Double_U, puede enviarme el archivo PBIX, podría darle un poco de ayuda. Porque tengo los mismos problemas antes.
Hola
¿Desea analizar los datos solo hasta un mes? es decir, ¿alguna vez querría obtener una respuesta a un nivel de fecha en particular, como la ocupación, como el 26 de julio de 2020? Además, ¿estarías bien si en el back-end trato el 31 de diciembre de 2999 como la fecha de hoy?
Gracias a ambos.
Ashish, para este KPI sería sólo para el mes completo y sólo para un mes a la vez.
Hola
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Hola, esto probablemente no es una solución final, pero tal vez alguna ayuda en el camino - una medida que cuenta los días que están dentro del mes seleccionado de la segmentación de datos:
Resident days selected month =
VAR StartSelectedMonth = DATE(2020, SELECTEDVALUE(Dates[Month]), 1)
VAR EndSelectedMonth = DATE(2020, SELECTEDVALUE(Dates[Month])+1, 1) - 1
VAR Arrival = CALCULATE( MAX(cv_BI_Occupancy[Arrival]), ALL(Dates[Date])) //ignore the slicer
VAR Leave = CALCULATE( MAX(cv_BI_Occupancy[LeaveDate]), ALL(Dates[Date])) //ignore the slicer
VAR FilteredDateTable = FILTER(VALUES(Dates[Date]),
Dates[Date] >= StartSelectedMonth &&
Dates[Date] <= EndSelectedMonth)
VAR Days = SUMX( FilteredDateTable, IF( Dates[Date] >= Arrival && Dates[Date] <= Leave, 1, 0))
RETURN Days
En general, debe usar una columna de medida en lugar de calculada siempre que sea posible, ya que se calcula cuando es necesario en lugar de usar memoria. Si es un modelo pequeño y si resuelve su problema no será un problema.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |