cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
vin26
Resolver I
Resolver I

Categoría dinámica en la sección de segmentación

Hola

Por favor, ayúdame a crear una creación de catogaries basado en las selecciones de punto medio. Para los ejes X e Y del carro de dispersión inferior se calculan en función de las segmentaciones de datos de la izquierda.

Si el punto medio1 es 140 y el punto medio2 a 120, todos los puntos en el gráfico:

entre 0 y 140 en el eje X y 0 a 120 en el eje Y será de categoría A

Por encima de 140 en el eje X y de 0 a 120 en el eje Y será de categoría B

Por encima de 140 en el Eje X y por encima de 120 en el eje Y será de Categoría C

0 a 140 en el eje X y por encima de 120 en el eje Y será de categoría D

Sample_pbi1.JPG

Salida esperada similar a:

Sample_pbi2.JPG

Por favor, ayúdame con la lógica.

Archivo de ejemplo: https://www.dropbox.com/s/hemibrwsquy0mhu/Catogary_Sample_PBI.pbix?dl=0

2 ACCEPTED SOLUTIONS
amitchandak
Super User
Super User

@vin26, tiene que crear una medida como esta medida de ejemplo y usarla en el formato condicional

Color Dot = 
	var _avgDisc = CALCULATE([Discount %],ALL(Retail))
	var _avgMargin = CALCULATE([Margin %],ALL(Retail))
	return switch(TRUE(),
	[Margin %]>_avgMargin && [Discount %] <_avgDisc , "Green",
	[Margin %]>_avgMargin && [Discount %] >_avgDisc , "Blue",
	[Margin %]<_avgMargin && [Discount %] <_avgDisc , "Yellow",
	[Margin %]<_avgMargin && [Discount %] >_avgDisc , "Red", "Black")

He explicado cómo hacerlo en este seminario web

https://youtu.be/Q1vPWmfI25o?t=2851

Did I answer your question? Mark my post as a solution! Appreciate your Kudos!! !!
Dashboard of My Blogs !! Connect on Linkedin
Want To Learn Power BI
Learn Power BI Beginners !! Advance Power BI Concepts !! Power BI For Tableau User !! Learn Power BI in Hindi !!
Proud to be a Super User!

View solution in original post

@vin26 - Creo que es debido a sus expresiones lógicas, tal vez:

Measure = 
    var _avgDisc = CALCULATE('Midpoint1_X Axis'[Midpoint1 Value],ALL(Data))
	var _avgMargin = CALCULATE('Midpoint2_Y Axis'[Midpoint2 Value],ALL(Data))
        return 
            switch(MAX('Table'[Category]),
                "A",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] <_avgDisc)),
                "B",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] >_avgDisc)),
                "C",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] <_avgDisc)),
                "D",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] >_avgDisc))
            )

Si no es así, tal vez intente eliminar algunas declaraciones DE CALCULATE:

Measure = 
    var _avgDisc = CALCULATE('Midpoint1_X Axis'[Midpoint1 Value],ALL(Data))
	var _avgMargin = CALCULATE('Midpoint2_Y Axis'[Midpoint2 Value],ALL(Data))
        return 
            switch(MAX('Table'[Category]),
                "A",COUNTROWS(FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] <_avgDisc)),
                "B",COUNTROWS(FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] >_avgDisc)),
                "C",COUNTROWS(FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] <_avgDisc)),
                "D",COUNTROWS(FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] >_avgDisc))
            )

@ me in replies or I'll lose your thread!!!
Check out my External Tool for Power BI Desktop! Microsoft Hates Greg's Quick Measures
YouTube Channel! Microsoft Hates Greg
Check out my latest book!

View solution in original post

6 REPLIES 6
Eyelyn9
Community Support
Community Support

Hola @vin26 ,

Como @Greg_Deckler dicho , se podría utilizar SWITCH() o utilizar la función IF() como esta:

categoryType =
IF (
    [forX] >= 0
        && [forX] <= 140
        && [forY] >= 0
        && [forY] <= 120,
    "Categoty A",
    IF (
        [forX] > 140
            && [forY] >= 0
            && [forY] >= 0
            && [forY] <= 120,
        "Category B",
        IF (
            [forX] > 140
                && [forY] > 120,
            "Category C",
            IF ( [forX] >= 0 && [forX] <= 140 && [forY] > 120, "Category D" )
        )
    )
)

9.4.3.1.png

¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.

Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.

Saludos

Eyelyn Qin

amitchandak
Super User
Super User

@vin26, tiene que crear una medida como esta medida de ejemplo y usarla en el formato condicional

Color Dot = 
	var _avgDisc = CALCULATE([Discount %],ALL(Retail))
	var _avgMargin = CALCULATE([Margin %],ALL(Retail))
	return switch(TRUE(),
	[Margin %]>_avgMargin && [Discount %] <_avgDisc , "Green",
	[Margin %]>_avgMargin && [Discount %] >_avgDisc , "Blue",
	[Margin %]<_avgMargin && [Discount %] <_avgDisc , "Yellow",
	[Margin %]<_avgMargin && [Discount %] >_avgDisc , "Red", "Black")

He explicado cómo hacerlo en este seminario web

https://youtu.be/Q1vPWmfI25o?t=2851

Did I answer your question? Mark my post as a solution! Appreciate your Kudos!! !!
Dashboard of My Blogs !! Connect on Linkedin
Want To Learn Power BI
Learn Power BI Beginners !! Advance Power BI Concepts !! Power BI For Tableau User !! Learn Power BI in Hindi !!
Proud to be a Super User!

View solution in original post

Hola @amitchandak gracias por esta solución, funciona bien para los cambios de color en el gráfico.

PBI2.JPG

También requeriría agrupar los valores por categoría, para eso he creado una tabla con categorías y creado una medida como la siguiente:

Measure = 
    var _avgDisc = CALCULATE('Midpoint1_X Axis'[Midpoint1 Value],ALL(Data))
	var _avgMargin = CALCULATE('Midpoint2_Y Axis'[Midpoint2 Value],ALL(Data))
        return 
            switch(MAX('Table'[Category]),
                "A",CALCULATE(COUNT(Data[Sl No]),[Measure_Value1]>_avgMargin && [Measure_Value2] <_avgDisc),
                "B",CALCULATE(COUNT(Data[Sl No]),[Measure_Value1]>_avgMargin && [Measure_Value2] >_avgDisc),
                "C",CALCULATE(COUNT(Data[Sl No]),[Measure_Value1]<_avgMargin && [Measure_Value2] <_avgDisc),
                "D",CALCULATE(COUNT(Data[Sl No]),[Measure_Value1]<_avgMargin && [Measure_Value2] >_avgDisc)
            )

no está funcionando y conseguir a continuación error:

pbi_error.JPG

@vin26 - Creo que es debido a sus expresiones lógicas, tal vez:

Measure = 
    var _avgDisc = CALCULATE('Midpoint1_X Axis'[Midpoint1 Value],ALL(Data))
	var _avgMargin = CALCULATE('Midpoint2_Y Axis'[Midpoint2 Value],ALL(Data))
        return 
            switch(MAX('Table'[Category]),
                "A",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] <_avgDisc)),
                "B",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] >_avgDisc)),
                "C",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] <_avgDisc)),
                "D",CALCULATE(COUNT(Data[Sl No]),FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] >_avgDisc))
            )

Si no es así, tal vez intente eliminar algunas declaraciones DE CALCULATE:

Measure = 
    var _avgDisc = CALCULATE('Midpoint1_X Axis'[Midpoint1 Value],ALL(Data))
	var _avgMargin = CALCULATE('Midpoint2_Y Axis'[Midpoint2 Value],ALL(Data))
        return 
            switch(MAX('Table'[Category]),
                "A",COUNTROWS(FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] <_avgDisc)),
                "B",COUNTROWS(FILTER(Data,[Measure_Value1]>_avgMargin && [Measure_Value2] >_avgDisc)),
                "C",COUNTROWS(FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] <_avgDisc)),
                "D",COUNTROWS(FILTER(Data,[Measure_Value1]<_avgMargin && [Measure_Value2] >_avgDisc))
            )

@ me in replies or I'll lose your thread!!!
Check out my External Tool for Power BI Desktop! Microsoft Hates Greg's Quick Measures
YouTube Channel! Microsoft Hates Greg
Check out my latest book!

View solution in original post

Hola @Greg_Deckler Perfect!, gracias a una tonelada, ambos funcionan!

Greg_Deckler
Super User
Super User

@vin26 - Parece que podría crear una columna como:

Column =
  VAR __MidX = <calculate mid>
  VAR __MidY = <calculate mid>
RETURN
  SWITCH(TRUE(),
    <logical criteria 1>,"Category 1",
    <logical criteria 2>,"Category 2",
    <logical criteria 3>,"Category 3",
    <logical criteria 4>,"Category 4",
  )

@ me in replies or I'll lose your thread!!!
Check out my External Tool for Power BI Desktop! Microsoft Hates Greg's Quick Measures
YouTube Channel! Microsoft Hates Greg
Check out my latest book!

Helpful resources

Announcements
Power BI December 2021 Update_carousel 768x460.jpg

Check it Out!

Click here to read more about the December 2021 Updates!

User Group Leader Meeting January 768x460.png

Calling all User Group Leaders!

Don't miss the User Group Leader meetings on January, 24th & 25th, 2022.

Jan 2022 Dev Camp 768x460 copy.png

Power BI Dev Camp- January 27th, 2022

Mark your calendars and join us for our next Power BI Dev Camp!