qué columna calculada tiene el valor más cercano a otra columna

Un usuario Pregunto ✅

BartB

Hola a todos,

Tengo 5 columnas calculadas y una columna que considero como mi «Valor de búsqueda». Ahora me gustaría hacer dos columnas más calculadas:

1. con el valor de la columna más cercana a mi valor de búsqueda

2. con el nombre de la columna más cercana a mi valor de búsqueda.

Hice algo similar en Excel (ver más abajo). ¿Alguien sabe una fórmula DAX (u otra solución) que pueda usar en Power BI para replicar lo que hice en Excel?

¡Muchas gracias de antemano!

Valor de búsqueda columna1 columna 2 columna3 column4 column5 Columna más cercana Valor de la columna más cercana
4 1 2 3 4 5 column4 4
= BUSCAR (G5, I5: M5, I4: M4) = BUSCAR (G5, I5: M5, I5: M5)

Zubair_Muhammad

En respuesta a Zubair_Muhammad

@BartB

Closest Column =
VAR MyTable =
    UNION (
        ROW ( "Column Name", "Column1", "Value", Table1[column1] ),
        ROW ( "Column Name", "Column2", "Value", Table1[column2] ),
        ROW ( "Column Name", "Column3", "Value", Table1[column3] ),
        ROW ( "Column Name", "Column4", "Value", Table1[column4] ),
        ROW ( "Column Name", "Column5", "Value", Table1[column5] )
    )
RETURN
    CONCATENATEX (
        FILTER ( MyTable, [Value] = Table1[Closest Value] ),
        [Column Name],
        ", "
    )

Hola @BartB,

1. ¿Es estable el valor de búsqueda? ¿Siempre en una columna?

2. ¿Dónde está el valor de búsqueda? ¿En otra tabla?

3. ¿Hay solo un valor de búsqueda? ¿O cada fila tiene un valor de búsqueda?

4. ¿Cómo evaluar el más cercano?

Atentamente,

Valle

BartB

En respuesta a v-jiascu-msft

Hola @ v-jiascu-msft,

Gracias por su respuesta.

1. ¿Es estable el valor de búsqueda? ¿Siempre en una columna?

Sí, el valor de búsqueda es estable. Es una columna calculada con el resultado de un valor de búsqueda en otra columna.

2. ¿Dónde está el valor de búsqueda? ¿En otra tabla?

El valor de búsqueda en sí está en la misma tabla. Sin embargo, es una columna calculada y, por lo tanto, no está en el Editor de consultas.

3. ¿Hay solo un valor de búsqueda? ¿O cada fila tiene un valor de búsqueda?

Cada fila tiene un valor de búsqueda

4. ¿Cómo evaluar el más cercano?

Ideal sería literalmente lo más cercano a … (3.9 está más cerca de 4 que de 4.2). Pero si esto no es posible, ya estaría satisfecho con una coincidencia aproximada como en la fórmula de vlookup en Excel.

Si tiene más preguntas, hágamelo saber.

BR,
Bart

En respuesta a BartB

Hola @BartB,

¿Funcionó la solución de @Zubair_Muhammad?

Atentamente,

Valle

Zubair_Muhammad

En respuesta a BartB

@BartB

Dale una oportunidad

Closest Value =
VAR fig = 1000000000
VAR Positives =
    UNION (
        ROW (
            "BartB", IF (
                Table1[Lookup value] >= Table1[column1],
                Table1[Lookup value] - Table1[column1],
                fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] >= Table1[column2],
                Table1[Lookup value] - Table1[column2],
                fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] >= Table1[column3],
                Table1[Lookup value] - Table1[column3],
                fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] >= Table1[column4],
                Table1[Lookup value] - Table1[column4],
                fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] >= Table1[column5],
                Table1[Lookup value] - Table1[column5],
                fig
            )
        )
    )
VAR Positivevariances =
    MINX ( Positives, [BartB] )
VAR Negatives =
    UNION (
        ROW (
            "BartB", IF (
                Table1[Lookup value] < Table1[column1],
                Table1[Lookup value] - Table1[column1],
                - fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] < Table1[column2],
                Table1[Lookup value] - Table1[column2],
                - fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] < Table1[column3],
                Table1[Lookup value] - Table1[column3],
                - fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] < Table1[column4],
                Table1[Lookup value] - Table1[column4],
                - fig
            )
        ),
        ROW (
            "BartB", IF (
                Table1[Lookup value] < Table1[column5],
                Table1[Lookup value] - Table1[column5],
                - fig
            )
        )
    )
VAR Negativevariances =
    MAXX ( Negatives, [BartB] )
RETURN
    IF (
        Positivevariances = 0,
        Table1[Lookup value],
        IF (
            Positivevariances <= ABS ( Negativevariances ),
            Table1[Lookup value] - Positivevariances,
            Table1[Lookup value] - Negativevariances
        )
    )

Zubair_Muhammad

En respuesta a Zubair_Muhammad

@BartB

Closest Column =
VAR MyTable =
    UNION (
        ROW ( "Column Name", "Column1", "Value", Table1[column1] ),
        ROW ( "Column Name", "Column2", "Value", Table1[column2] ),
        ROW ( "Column Name", "Column3", "Value", Table1[column3] ),
        ROW ( "Column Name", "Column4", "Value", Table1[column4] ),
        ROW ( "Column Name", "Column5", "Value", Table1[column5] )
    )
RETURN
    CONCATENATEX (
        FILTER ( MyTable, [Value] = Table1[Closest Value] ),
        [Column Name],
        ", "
    )

dani0010

Puede hacer esto con Power Query, pero no con DAX. Lo siento, no tengo tiempo para brindar una solución completa en este momento, pero pensé que este consejo podría darle esperanza y ahorrarle tiempo para encontrar una solución.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *