Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Hola
Tengo un tema interesante que estoy seguro es simple, pero me ha roto el cerebro.
Estoy escribiendo un informe que muestra los trabajos asignados a las tripulaciones semanalmente. Se utiliza para pronosticar la disponibilidad y tiene en cuenta la licencia. Tengo dos tablas que usan WEEKNUMBER y CREWID para clasificar los datos. Su funcionamiento bien (ver más abajo) pero no necesito introducir JOB PRIORITY como un filtro y esto me rompe la mente.
Semana | Equipo | Horas de trabajo | Horario disponible | equilibrar |
202046 | A | 200 | 220 | +20 |
202046 | B | 220 | 220 | 0 |
202046 | C | 250 | 190 | -60 |
Necesito introducir JOB PRIORITY en la tabla JOB y mostrar la siguiente tabla:
Semana | Equipo | Prioridad | Horas de trabajo | Horario disponible | Equilibrio prioritario | Balance general |
202046 | A | 1 | 150 | 220 | +70 | +20 |
202046 | A | 2 | 50 | 220 | +170 | +20 |
202046 | B | 1 | 20 | 220 | +200 | 0 |
202046 | B | 2 | 100 | 220 | +120 | 0 |
202046 | B | 3 | 100 | 220 | +120 | 0 |
202046 | C | 1 | 190 | 190 | 0 | -60 |
202046 | C | 2 | 50 | 190 | +140 | -60 |
202046 | C | 3 | 10 | 190 | +180 | -60 |
Así que como puede ver arriba, debemos dejar todos los trabajos de prioridad 2 y 3 para la tripulación C o reasignar a otro personal.
A continuación, tenemos que ser capaces de filtrar por prioridad (es decir, "¿qué pasaría si sólo hiciéramos trabajos de prioridad 1?") La tabla debe tener este aspecto:
Semana | Equipo | Prioridad | Horas de trabajo | Horario disponible | Equilibrio prioritario | Balance general |
202046 | A | 1 | 150 | 220 | +70 | +20 |
202046 | B | 1 | 20 | 220 | +200 | 0 |
202046 | C | 1 | 190 | 190 | 0 | -60 |
Luego existe la posibilidad de seleccionar *multiple* prioritas que ni siquiera he considerado todavía!!
¿Alguien puede ofrecer algún consejo sobre la creación de esta estructura? Muy apreciado. 🙂
Solved! Go to Solution.
Hola @cnschulz ,
En primer lugar, puede crear una columna personalizada [Priority] en la consulta power para la tabla JOB, toda la consulta es así, cerrarla y aplicarla.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMjAxU9JRcgRiQ1MDpVgdNEF0MScgNsIiZmhAjKAzSNASiyC6NWCFQLFYAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Week = _t, Crew = _t, #"Job Hours" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Week", Int64.Type}, {"Crew", type text}, {"Job Hours", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type",{"Crew"},{{"Rows", each Table.AddIndexColumn(_, "Index", 1), type table}}),
#"Expanded Rows" = Table.ExpandTableColumn(#"Grouped Rows", "Rows", {"Week", "Job Hours", "Index"}, {"Week", "Job Hours", "Priority"}),
#"Reordered Columns" = Table.ReorderColumns(#"Expanded Rows",{"Week", "Crew", "Priority", "Job Hours"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Reordered Columns",{{"Week", Int64.Type}, {"Priority", Int64.Type}, {"Job Hours", Int64.Type}})
in
#"Changed Type1"
A continuación, cree algunas columnas calculadas para obtener la salida esperada en la tabla JOB:
Available Hours =
CALCULATE (
SUM ( AVAILABILITY[Available Hours] ),
FILTER ( ALL ( AVAILABILITY ), 'AVAILABILITY'[Crew] = EARLIER ( JOB[Crew] ) )
)
Priority Balance = [Available Hours] - [Job Hours]
Overall Balance =
[Available Hours]
- CALCULATE (
SUM ( JOB[Job Hours] ),
FILTER ( ALL ( JOB ), 'JOB'[Crew] = EARLIER ( 'JOB'[Crew] ) )
)
La tabla JOB final es la siguiente:
Prioridad de filtro 1:
Adjunto un archivo de muestra en el siguiente, espera ayudarle.
Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @cnschulz ,
En primer lugar, puede crear una columna personalizada [Priority] en la consulta power para la tabla JOB, toda la consulta es así, cerrarla y aplicarla.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMjAxU9JRcgRiQ1MDpVgdNEF0MScgNsIiZmhAjKAzSNASiyC6NWCFQLFYAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Week = _t, Crew = _t, #"Job Hours" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Week", Int64.Type}, {"Crew", type text}, {"Job Hours", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type",{"Crew"},{{"Rows", each Table.AddIndexColumn(_, "Index", 1), type table}}),
#"Expanded Rows" = Table.ExpandTableColumn(#"Grouped Rows", "Rows", {"Week", "Job Hours", "Index"}, {"Week", "Job Hours", "Priority"}),
#"Reordered Columns" = Table.ReorderColumns(#"Expanded Rows",{"Week", "Crew", "Priority", "Job Hours"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Reordered Columns",{{"Week", Int64.Type}, {"Priority", Int64.Type}, {"Job Hours", Int64.Type}})
in
#"Changed Type1"
A continuación, cree algunas columnas calculadas para obtener la salida esperada en la tabla JOB:
Available Hours =
CALCULATE (
SUM ( AVAILABILITY[Available Hours] ),
FILTER ( ALL ( AVAILABILITY ), 'AVAILABILITY'[Crew] = EARLIER ( JOB[Crew] ) )
)
Priority Balance = [Available Hours] - [Job Hours]
Overall Balance =
[Available Hours]
- CALCULATE (
SUM ( JOB[Job Hours] ),
FILTER ( ALL ( JOB ), 'JOB'[Crew] = EARLIER ( 'JOB'[Crew] ) )
)
La tabla JOB final es la siguiente:
Prioridad de filtro 1:
Adjunto un archivo de muestra en el siguiente, espera ayudarle.
Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¿Cómo se configura el modelo?
Proud to be a Super User!
Paul on Linkedin.
La tabla JOB contiene
WeekNumber, CrewId, JobHours
La tabla AVAILABILITY contiene
WeekNumber, CrewId y HoursAvailable
Ahora necesito introducir Priority en la tabla JOB, que hará una relación de muchos a uno y romperá el resumen.