cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MikeKK
Helper II
Helper II

Cálculo del mejor trimestre/año

Me gustaría construir una tabla calculada que devuelva el mejor trimestre/año en términos de cantidad de ventas.

Esta es la tabla Datos

QtrYearQtrNumberSalesQty
Qtr1-2018180
Qtr1-2019189
Qtr1-2020173
Qtr2-2018285
Qtr2-2019288
Qtr2-2020279
Qtr3-2018386
Qtr3-2019384
Qtr3-2020383
Qtr4-2018484

Creo que esto no es difícil, simplemente no pude averiguar cómo hacerlo

Esta es la tabla de salida deseada

BestQtrYearSalesQty
Qtr1-201989
Qtr2-201988
Qtr3-201886
Qtr4-201985

He intentado groupby, pero sólo devuelve el número qtr, no el año trimestre

QtrNumberSalesQty
189
288
386
485
1 ACCEPTED SOLUTION
CNENFRNL
Super User III
Super User III

@MikeKK, de hecho, se puede lograr mediante Power Query y DAX.

Solución Power Query,

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Vc5BDoAgDETRu3SNSSlV6DFcEy5hvH8U4iBddPMy+WmtdN5X3IRjoUDxvcLUws8GtpWFP84JLIhIX++ODVxWHpHOebYTIqmvD8cG1pVHZPD8RBFRt1ZE1D2oiGDdHg==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [QtrYear = _t, QtrNumber = _t, SalesQty = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"QtrYear", type text}, {"QtrNumber", Int64.Type}, {"SalesQty", Int64.Type}}),

    #"Grouped Rows" = Table.Group(#"Changed Type", {"QtrNumber"}, {{"Best", each [best=List.Max([SalesQty]), result=Table.SelectRows(_, each [SalesQty]=best)][result]}}),
    #"Expanded Best" = Table.ExpandTableColumn(#"Grouped Rows", "Best", {"QtrYear", "SalesQty"}, {"QtrYear", "SalesQty"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Best",{"QtrNumber"})
in
    #"Removed Columns"

Screenshot 2020-11-15 163218.png

Solución de tabla calculada DAX

Best Qtr = 
VAR __t = SUMMARIZECOLUMNS ( Sales[QtrNumber], "Best", MAX ( Sales[SalesQty] ) )
VAR __best =
    ADDCOLUMNS (
        __t,
        "QtrYear", CALCULATE ( MAX ( Sales[QtrYear] ), Sales[SalesQty] = EARLIER ( [Best] ) )
    )
RETURN
    __best

Screenshot 2020-11-15 163352.png

Solución de medida DAX

Best Sales = 
VAR __best =
    MAXX (
        DISTINCT ( 'Sales'[QtrNumber] ),
        CALCULATE ( MAX ( Sales[SalesQty] ), ALLEXCEPT ( Sales, Sales[QtrNumber] ) )
    )
RETURN
    IF ( MAX ( Sales[SalesQty] ) = __best, __best )

Screenshot 2020-11-15 171543.png

View solution in original post

2 REPLIES 2
CNENFRNL
Super User III
Super User III

@MikeKK, de hecho, se puede lograr mediante Power Query y DAX.

Solución Power Query,

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Vc5BDoAgDETRu3SNSSlV6DFcEy5hvH8U4iBddPMy+WmtdN5X3IRjoUDxvcLUws8GtpWFP84JLIhIX++ODVxWHpHOebYTIqmvD8cG1pVHZPD8RBFRt1ZE1D2oiGDdHg==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [QtrYear = _t, QtrNumber = _t, SalesQty = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"QtrYear", type text}, {"QtrNumber", Int64.Type}, {"SalesQty", Int64.Type}}),

    #"Grouped Rows" = Table.Group(#"Changed Type", {"QtrNumber"}, {{"Best", each [best=List.Max([SalesQty]), result=Table.SelectRows(_, each [SalesQty]=best)][result]}}),
    #"Expanded Best" = Table.ExpandTableColumn(#"Grouped Rows", "Best", {"QtrYear", "SalesQty"}, {"QtrYear", "SalesQty"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Best",{"QtrNumber"})
in
    #"Removed Columns"

Screenshot 2020-11-15 163218.png

Solución de tabla calculada DAX

Best Qtr = 
VAR __t = SUMMARIZECOLUMNS ( Sales[QtrNumber], "Best", MAX ( Sales[SalesQty] ) )
VAR __best =
    ADDCOLUMNS (
        __t,
        "QtrYear", CALCULATE ( MAX ( Sales[QtrYear] ), Sales[SalesQty] = EARLIER ( [Best] ) )
    )
RETURN
    __best

Screenshot 2020-11-15 163352.png

Solución de medida DAX

Best Sales = 
VAR __best =
    MAXX (
        DISTINCT ( 'Sales'[QtrNumber] ),
        CALCULATE ( MAX ( Sales[SalesQty] ), ALLEXCEPT ( Sales, Sales[QtrNumber] ) )
    )
RETURN
    IF ( MAX ( Sales[SalesQty] ) = __best, __best )

Screenshot 2020-11-15 171543.png

View solution in original post

ryan_mayu
Super User II
Super User II

@jjkk

tal vez usted puede crear una nueva mesa para esto.

Table 2 = 
VAR tbl=SUMMARIZE('Table','Table'[QtrNumber],"qty",max('Table'[SalesQty]))
return ADDCOLUMNS(tbl,"yearqty",maxx(FILTER('Table','Table'[QtrNumber]=EARLIER('Table'[QtrNumber])&&[qty]='Table'[SalesQty]),'Table'[QtrYear]))

1.PNG2.PNG





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS Attendee Badge

Claim Your Badge & Digital Swag!

Check out how to claim yours today!

secondImage

Are You Ready?

Test your skills now with the Cloud Skills Challenge.

Top Solution Authors