martbov
Hola a todos,
He estado trabajando con Power BI durante algunas semanas y todo parecía ir bastante bien (¡es una herramienta increíble!), pero ahora, por primera vez, parece que me he encontrado con un problema. La situación es la siguiente: desde el sistema de información de nuestra empresa he expuesto varias entidades usando OData. Las entidades necesarias para este informe son «Empleado», «Presupuesto de productividad» y «Línea de registro de horas» (y, por extensión, «Año» y «Día») y necesito crear una descripción general que muestre las horas del presupuesto frente a las horas reales. Primero intentaré explicar brevemente las entidades relevantes:
Empleado: Una tabla con todos los empleados, de la cual solo son relevantes el atributo ID y CompleteName.
ProductivityBudget: Una tabla con presupuestos de horas para cada empleado, por año. Suponiendo que solo cargué los datos de 2015 y 2016, una el empleado tiene dos presupuestos: uno para 2015 y otro para 2016. Un ProductivityBudget tiene algunos atributos relevantes, como WorkableDays, HolidayDays y NonWorkableDays, que se explican por sí mismos. Creé una medida en ProductivityBudget que calcula NetWorkableHours en función de los atributos mencionados anteriormente. Un ProductivityBudget tiene un atributo ProductivyBudget_Year que lo vincula a una tabla Year con atributos como StartDate, EndDate y YearNo. El último atributo relevante para esta tabla es ProductivyBudget_Employee, que crea una asociación entre un empleado y un presupuesto. Esta es una relación 1-*.
HourRegistrationLine: una tabla con líneas de registro de horas para cada empleado. Estas horas se registran en proyectos, pero para el alcance de este problema, solo es relevante como información de fondo (hay un atributo HourRegistrationLine_Project). Un empleado puede trabajar en diferentes proyectos en un día y, por lo tanto, tener varias líneas de registro de horas para un día. Una HourRegistrationLine tiene un atributo StartTime y EndTime, ambos del tipo DateTime. También tiene los atributos WorkedHours y BillableHours para mapear la productividad y un atributo HourRegistrationLine_Employee que crea una asociación *-1 entre HourRegistrationLines y Employees. Finalmente, hay un atributo HourRegistrationLine_Day para la asociación con una tabla de días. Esta tabla de días tiene atributos como ID, fecha de inicio, fecha de finalización (tipos de fecha y hora), día_semana, día_año y día_mes.
Mi pregunta ahora es: ¿cómo puedo trazar las horas presupuestadas frente a las horas reales de cada empleado? Probé varias opciones, como vincular la tabla Día a la tabla Año, pero eso crearía ambigüedad porque ya existe un vínculo indirecto a través de Día-HoraRegistrationLine-Employee-ProductivityBudget-Year. Sería preferible mantener la mayor parte posible de la estructura del sistema de información en Power BI.
Espero que alguien pueda tomarse el tiempo para investigar mi problema y ayudarme a encontrar una solución.
¡Gracias por adelantado!
EDITAR:
Si necesita más información, hágamelo saber y se la proporcionaré porque realmente necesito encontrar una solución.
ImkeF
En respuesta a martbov
1) Ambas tablas permanecen conectadas a «Empleado» como lo han estado antes
2) Puede crear fácilmente un campo de fecha para conectar su tabla de presupuesto a la tabla de calendario diario «Día» de esta manera:
BudgetDate = RELATED('Year'[EndDate])
O toma el primer día del año si así lo prefieres.
Ahora puedes conectarte.
Por último, agregue una columna «Año» en su tabla «Día». Debe incluir este campo en sus informes. (Sugeriría ocultar la tabla «Año» completamente de su modelo o remodelación para que pueda deshacerse de esta tabla por completo)
Por cierto: en el ejemplo que ha publicado, la conexión entre «HoursRegistrationLine» y la tabla «Day» no funciona, porque son formatos de fecha y hora con horas en su mayoría diferentes.
Lo cambié a sus claves técnicas en este ejemplo: https://www.dropbox.com/s/c596tb5yoo621er/PBI_ProductivityOverviewPBI.pbix?dl=0
(La mayor parte lo haría en el editor de consultas, pero esto no se puede hacer sin acceso a sus fuentes).
martbov
Disculpe la molestia, pero mi problema aún persiste. ¿Hay alguien que tenga una idea de cómo abordarlo con la información proporcionada?
ImkeF
En respuesta a martbov
Debe conectar ambas tablas de hechos (presupuesto y datos reales) a una tabla de fecha/calendario unida. Por lo tanto, debe unir/fusionar sus tablas de «Día» y «Año» en una tabla de calendario. Luego arrastre las fechas de esta tabla a sus informes y deberían mostrar lo que desea ver.
martbov
En respuesta a ImkeF
Hola Imke,
Gracias por su respuesta. Me gustaría intentarlo, pero veo dos dificultades al hacerlo.
1. ¿Cómo conectaría HourRegistrationLine y ProductivityBudget a una tabla de calendario conservando la asociación que tiene el empleado con HourRegistrationLine y ProductivityBudget? Porque ambos necesitan una cita.
2. ProductivityBudget no tiene un valor de Fecha (hora), solo una ID que lo conecta a la tabla Año. En comparación, HourRegistrationLine tiene StartTime y EndTime, que son valores de fecha y hora, por lo que puedo usar el valor de fecha de eso.
¿Cómo sugieres que maneje eso?
ImkeF
En respuesta a martbov
1) Ambas tablas permanecen conectadas a «Empleado» como lo han estado antes
2) Puede crear fácilmente un campo de fecha para conectar su tabla de presupuesto a la tabla de calendario diario «Día» de esta manera:
BudgetDate = RELATED('Year'[EndDate])
O toma el primer día del año si así lo prefieres.
Ahora puedes conectarte.
Por último, agregue una columna «Año» en su tabla «Día». Debe incluir este campo en sus informes. (Sugeriría ocultar la tabla «Año» completamente de su modelo o remodelación para que pueda deshacerse de esta tabla por completo)
Por cierto: en el ejemplo que ha publicado, la conexión entre «HoursRegistrationLine» y la tabla «Day» no funciona, porque son formatos de fecha y hora con horas en su mayoría diferentes.
Lo cambié a sus claves técnicas en este ejemplo: https://www.dropbox.com/s/c596tb5yoo621er/PBI_ProductivityOverviewPBI.pbix?dl=0
(La mayor parte lo haría en el editor de consultas, pero esto no se puede hacer sin acceso a sus fuentes).
martbov
En respuesta a ImkeF
¡Gracias Imke! Esto es exactamente lo que quise decir. También gracias por las sugerencias con respecto a mi modelo, me aseguraré de implementarlas.
Lo siento por las restricciones de acceso, no estaba seguro de cómo resultaría eso usando fuentes OData. Me alegro de que hayas podido hacerlo funcionar.
v-qiuyu-msft
Hola @martbov,
¿Podría compartir algunos datos de muestra sobre las tablas Employee, ProductivityBudget y HourRegistrationLine? Si es posible, comparta el .pbix para nuestro análisis.
Atentamente,
qiuyun yu
martbov
En respuesta a v-qiuyu-msft
Lamento mucho haber tardado tanto en responder. Subí el archivo .pbix a dropbox:
https://www.dropbox.com/s/jo13ndi7ly3nw4i/ProductivityOverviewPBI.pbix?dl=0
martbov
En respuesta a v-qiuyu-msft
Hola Qiuyn Yu,
¡Gracias por su respuesta rápida!
Debido a la confidencialidad, no puedo compartir datos reales, así que haré un proyecto rápido en Power BI con exactamente la misma estructura. Probablemente me llevará unos minutos.
Atentamente,
Martín Bov