Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
¡Hola!
Tengo un conjunto de datos y estoy tratando de obtener el último "Departamento" dependiendo de una fecha que selecciono en una segmentación de fecha. A continuación se muestra un ejemplo del conjunto de datos. La medida devolvería el valor del Departamento con la fecha de vigencia máxima que es justo antes de la fecha seleccionada de la segmentación de datos. No puedo usar solo la función MAX porque devolverá el valor máximo sin importar la fecha que seleccione. Por favor, vea a continuación lo que estoy buscando. Gracias de antemano por su ayuda! 🙂
Dataset
Id | Fecha de entrada en vigor | Departamento |
A1 | 12/1/2020 | Hr |
A1 | 11/1/2020 | Hr |
A1 | 12/2/2019 | eso |
A1 | 11/2/2019 | eso |
B1 | 10/1/2020 | Finanzas |
B1 | 10/1/2020 | eso |
B1 | 10/2/2019 | eso |
B1 | 10/2/2019 | eso |
C1 | 8/1/2020 | Hr |
C1 | 8/1/2020 | Finanzas |
C1 | 8/2/2019 | eso |
C1 | 8/2/2019 | eso |
D1 | 9/1/2020 | eso |
D1 | 9/1/2020 | eso |
D1 | 9/2/2019 | Finanzas |
D1 | 9/2/2019 | Hr |
Resultados esperados si la fecha seleted es 12/1/20
Id | Fecha de entrada en vigor | Departamento |
A1 | 12/1/2020 | Hr |
B1 | 10/1/2020 | Finanzas |
C1 | 8/1/2020 | Hr |
D1 | 9/1/2020 | eso |
Resultados esperados si la fecha seleted es 12/1/19
Id | Fecha de entrada en vigor | Departamento |
A1 | 12/1/2019 | eso |
B1 | 10/2/2019 | eso |
C1 | 8/2/2019 | eso |
D1 | 9/2/2019 | Finanzas |
Solved! Go to Solution.
No @JayZee,
En función de su descripción, primero debe agregar una columna de índice para cada ID en la consulta de potencia, la consulta es así:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEyMjAy0DfUNzQCsj2ClGJ10MQNMcQNLfWNIOo9QzDFDRHiTsjmGADZbpl5iXnJqdglUTVBDCNC3BnJHAuEW9GFka12RjLKAsMkdGEXJJMsiRUGG2KJZi+6HMipsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, #"Effective Date" = _t, Department = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Effective Date", type date}, {"Department", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Count", each _, type table [ID=nullable text, Effective Date=nullable date, Department=nullable text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn([Count],"Index",1)),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Effective Date", "Department", "Index"}, {"Custom.Effective Date", "Custom.Department", "Custom.Index"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Count"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom.Effective Date", "Effective Date"}, {"Custom.Department", "Department"}, {"Custom.Index", "Index"}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Effective Date", type date}, {"Department", type text}, {"Index", Int64.Type}})
in
#"Changed Type1"
Ciérrelo y aplíquelo en la consulta de potencia, cree una medida como esta, colóquela en el filtro visual y establezca su valor como 1:
Visual control =
VAR _Name =
CALCULATE (
MAX ( 'Table'[Department] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID]
IN DISTINCT ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
&& 'Table'[Index]
= CALCULATE (
MIN ( 'Table'[Index] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID] = EARLIER ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
)
)
)
)
VAR _Date =
CALCULATE (
MAX ( 'Table'[Effective Date] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID]
IN DISTINCT ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
&& 'Table'[Index]
= CALCULATE (
MIN ( 'Table'[Index] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID] = EARLIER ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
)
)
)
)
RETURN
IF (
_Name = SELECTEDVALUE ( 'Table'[Department] )
&& _Date = SELECTEDVALUE ( 'Table'[Effective Date] ),
1,
0
)
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.
No @JayZee,
En función de su descripción, primero debe agregar una columna de índice para cada ID en la consulta de potencia, la consulta es así:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcjRU0lEyMjAy0DfUNzQCsj2ClGJ10MQNMcQNLfWNIOo9QzDFDRHiTsjmGADZbpl5iXnJqdglUTVBDCNC3BnJHAuEW9GFka12RjLKAsMkdGEXJJMsiRUGG2KJZi+6HMipsQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, #"Effective Date" = _t, Department = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Effective Date", type date}, {"Department", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Count", each _, type table [ID=nullable text, Effective Date=nullable date, Department=nullable text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddIndexColumn([Count],"Index",1)),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Effective Date", "Department", "Index"}, {"Custom.Effective Date", "Custom.Department", "Custom.Index"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Count"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom.Effective Date", "Effective Date"}, {"Custom.Department", "Department"}, {"Custom.Index", "Index"}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Effective Date", type date}, {"Department", type text}, {"Index", Int64.Type}})
in
#"Changed Type1"
Ciérrelo y aplíquelo en la consulta de potencia, cree una medida como esta, colóquela en el filtro visual y establezca su valor como 1:
Visual control =
VAR _Name =
CALCULATE (
MAX ( 'Table'[Department] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID]
IN DISTINCT ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
&& 'Table'[Index]
= CALCULATE (
MIN ( 'Table'[Index] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID] = EARLIER ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
)
)
)
)
VAR _Date =
CALCULATE (
MAX ( 'Table'[Effective Date] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID]
IN DISTINCT ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
&& 'Table'[Index]
= CALCULATE (
MIN ( 'Table'[Index] ),
FILTER (
ALL ( 'Table' ),
'Table'[ID] = EARLIER ( 'Table'[ID] )
&& YEAR ( SELECTEDVALUE ( 'Date'[Effective Date] ) )
= YEAR ( SELECTEDVALUE ( 'Table'[Effective Date] ) )
&& 'Table'[Effective Date] <= SELECTEDVALUE ( 'Date'[Effective Date] )
)
)
)
)
RETURN
IF (
_Name = SELECTEDVALUE ( 'Table'[Department] )
&& _Date = SELECTEDVALUE ( 'Table'[Effective Date] ),
1,
0
)
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.
Appart de ID A1 cada otro ID tiene fechas de vigencia duplicadas que va a hacer que sea imposible hacer lo que desea ya que 2 departamentos son efectivos en la misma fecha, pero suponiendo que esto es sólo un error tipográfico en sus datos de muestra que podría hacer algo como la siguiente.
@JayZee , Crear una nueva fecha de finalización de columna
Fecha de finalización: maxx(filter(table, [id] ?earlier([ID]) && [Department] ?earlier([Department]) && [Effective Date] <earlier([Effective Date])),[Effective Date])-1
A continuación, pruebe una medida como esta con la tabla de fechas independiente
medida :
var _max á maxx(allselected('Date'),'Date'[Date])
devolución
calculate(countrows(table), filter(table, table[Effective Date] <-_max y table[Effective Date] >- _max))
o seguir un approch como mi blog de RRHH
https://www.youtube.com/watch?v=e6Y-l_JtCq4
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Ask questions in Eventhouse and KQL, Eventstream, and Reflex.