Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Cambiar dinámicamente la columna a la que se hace referencia en una medida de DAX o en consultas de combinación

Hola equipo,

Tengo el siguiente caso. Tengo objetivos específicos (Nombre de destino 1, Nombre de destino 2, etc.) que cada mes tienen cambios en los criterios. Por ejemplo, en enero, el Nombre de destino 1 tiene un único criterio basado en la columna Grupo de artículos de Dim_Products donde solo son elegibles los productos del Nombre del grupo de artículos 1, el Nombre de destino 2 tiene 3 criterios, los productos elegibles son aquellos que están en Nombre de categoría 1 (Categoría de productos Dim) y Nombre de subcategoría 1 (Subcategoría de productos Dim) y Nombre de marca 1 (Marca de productos Dim coulumn), el Nombre de destino 3 tiene 1 criterio los productos que tienen el Nombre de subcategoría 2 (Subcategoría de productos atenuados). En febrero, los mismos objetivos tienen diferentes criterios. El nombre de destino 1 tiene 1 criterio, los productos que tienen el nombre de la categoría 2 (categoría de coulumn de productos atenuados), el nombre de destino 2 tiene 2 criterios, los productos que tienen el nombre del grupo de artículos 2 (grupo de artículos de coulumn de productos dim) y el nombre de la subcategoría 4 (subcategoría de coulumn de productos atenuados) y el nombre de destino 3 tiene 1 criterio productos con nombre de marca 17 (marca de coulumn de productos atenuados).

Tabla de configuración de destinos

MesBlancoCriteria_1Value_1Criteria_2Value_2Criteria_3Value_3
EneroNombre de destino 1Grupo de artículosNombre del grupo de artículos 1TTLTTLTTLTTL
EneroNombre de destino 2CategoríaNombre de la categoría 1SubcategoríaNombre de la subcategoría 1MarcaNombre de la marca 1
EneroNombre de destino 3SubcategoríaNombre de la subcategoría 2TTLTTLTTLTTL
FebreroNombre de destino 1CategoríaNombre de la categoría 2TTLTTLTTLTTL
FebreroNombre de destino 2Grupo de artículosNombre del grupo de artículos 2SubcategoríaNombre de la subcategoría 4TTLTTL
FebreroNombre de destino 3MarcaNombre de la marca 17TTLTTLTTLTTL

En las columnas de criterios, siempre haciendo referencia a una columna de la tabla de productos dim y en las columnas de valores, un valor de esta columna

Tabla de productos Dim

ProductoGrupo de artículosCategoríaSubcategoríaMarca
Producto 1Nombre del grupo de artículos 1Nombre de la categoría 1Nombre de la subcategoría 1Nombre de la marca 1
Producto 2Nombre del grupo de artículos 2Nombre de la categoría 3Nombre de la subcategoría 4Nombre de la marca 4
Producto 3Nombre del grupo de artículos 3Nombre de la categoría 5Nombre de la subcategoría 8Nombre de la marca 9
Producto 4Nombre del grupo de artículos 3Nombre de la categoría 6Nombre de la subcategoría 9Nombre de la marca 11
Producto 5Nombre del grupo de artículos 1Nombre de la categoría 2Nombre de la subcategoría 3Nombre de la marca 3
Producto 6Nombre del grupo de artículos 4Nombre de la categoría 8Nombre de la subcategoría 11Nombre de la marca 13
Producto 7Nombre del grupo de artículos 3Nombre de la categoría 5Nombre de la subcategoría 7Nombre de la marca 8
Producto 8Nombre del grupo de artículos 5Nombre de la categoría 10Nombre de la subcategoría 14Nombre de la marca 16
Producto 9Nombre del grupo de artículos 1Nombre de la categoría 1Nombre de la subcategoría 1Nombre de la marca 1
Producto 10Nombre del grupo de artículos 5Nombre de la categoría 11Nombre de la subcategoría 15Nombre de la marca 19
Producto 11Nombre del grupo de artículos 3Nombre de la categoría 7Nombre de la subcategoría 10Nombre de la marca 12
Producto 12Nombre del grupo de artículos 5Nombre de la categoría 12Nombre de la subcategoría 16Nombre de la marca 20
Producto 13Nombre del grupo de artículos 1Nombre de la categoría 1Nombre de la subcategoría 2Nombre de la marca 2
Producto 14Nombre del grupo de artículos 4Nombre de la categoría 9Nombre de la subcategoría 13Nombre de la marca 15
Producto 15Nombre del grupo de artículos 3Nombre de la categoría 5Nombre de la subcategoría 8Nombre de la marca 10
Producto 16Nombre del grupo de artículos 5Nombre de la categoría 11Nombre de la subcategoría 15Nombre de la marca 18
Producto 17Nombre del grupo de artículos 2Nombre de la categoría 3Nombre de la subcategoría 4Nombre de la marca 5
Producto 18Nombre del grupo de artículos 5Nombre de la categoría 10Nombre de la subcategoría 14Nombre de la marca 17
Producto 19Nombre del grupo de artículos 3Nombre de la categoría 6Nombre de la subcategoría 9Nombre de la marca 11
Producto 20Nombre del grupo de artículos 4Nombre de la categoría 8Nombre de la subcategoría 12Nombre de la marca 14
Producto 21Nombre del grupo de artículos 2Nombre de la categoría 4Nombre de la subcategoría 5Nombre de la marca 6
Producto 22Nombre del grupo de artículos 2Nombre de la categoría 4Nombre de la subcategoría 6Nombre de la marca 7

¿Cómo puedo gestionarlo para filtrar las ventas (tabla de hechos) tal y como está configurado por objetivo? ¿Nombre real vs nombre de destino 1, real vs nombre de destino 2, etc.?

Tenga en cuenta que cada mes, cada objetivo puede cambiar los criterios (por lo tanto, la columna debe filtrarse de la tabla Productos atenuados).

Necesito un enfoque para Power Query o DAX Measure.

Gracias de antemano,

Eleftheria Koniari

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Puede usar Power Query para transformar la tabla de criterios en una lista de productos coincidentes, p. ej.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8krMK00sqlTSUQpJLEpPLVHwS8xNVTAE8j1LUnMV3IvySwtQOAgFISE+WMhYHVyGGgH5zoklqen5YCkYE2FgcGlSMkIeiYdQ4lSUmJcCo2HCuK00JmyqEV6fuKUmFeEIH5xeIctEI0IhbkTYKybEWmaMIyTNcbs8FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Month = _t, Target = _t, Criteria_1 = _t, Value_1 = _t, Criteria_2 = _t, Value_2 = _t, Criteria_3 = _t, Value_3 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Month", type text}, {"Target", type text}, {"Criteria_1", type text}, {"Value_1", type text}, {"Criteria_2", type text}, {"Value_2", type text}, {"Criteria_3", type text}, {"Value_3", type text}}),
    Prods = List.Buffer( Table.ToRecords( Products)),
    AddedList = Table.AddColumn( #"Changed Type", "Prod Names", each
        let
            Criteria1Col = [Criteria_1],
            Criteria1Val = [Value_1],
            Criteria2Col = [Criteria_2],
            Criteria2Val = [Value_2],
            Criteria3Col = [Criteria_3],
            Criteria3Val = [Value_3],
            MatchingProds = List.Select( Prods, each 
                ( Criteria1Col = "TTL" or Record.Field( _, Criteria1Col) = Criteria1Val) and 
                ( Criteria2Col = "TTL" or Record.Field( _, Criteria2Col) = Criteria2Val) and 
                ( Criteria3Col = "TTL" or Record.Field( _, Criteria3Col) = Criteria3Val)
            )
        in 
            List.Transform( MatchingProds, each [Product])
    , type list),
    #"Removed Columns" = Table.RemoveColumns(AddedList,{"Criteria_1", "Value_1", "Criteria_2", "Value_2", "Criteria_3", "Value_3"}),
    #"Expanded Prod Names" = Table.ExpandListColumn(#"Removed Columns", "Prod Names"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Prod Names",{{"Prod Names", type text}})
in
    #"Changed Type1"

A continuación, puede utilizar TREATAS para hacer coincidir los productos de un determinado objetivo / mes con la tabla de productos, p. ej.

Sales for Target 1 =
VAR MatchingProducts =
    CALCULATETABLE (
        VALUES ( Targets[Product] ),
        TREATAS ( VALUES ( 'Date'[Month] ), Targets[Month] ),
        Targets[Target] = "Target 1"
    )
VAR Result =
    CALCULATE (
        [Sales Amount],
        KEEPFILTERS ( TREATAS ( MatchingProducts, Products[Product] ) )
    )
RETURN
    Result

@elia22gr,

También me gustaría tomarme un momento para agradecer a @johnt75 , por participar activamente en el foro de la comunidad y por las soluciones que han estado compartiendo en el foro de la comunidad. Sus contribuciones marcan una diferencia real.

Quería comprobar si ha tenido la oportunidad de revisar la información proporcionada. No dude en ponerse en contacto con nosotros si tiene más preguntas. Si la respuesta ha abordado su consulta, acéptela como una solución para que otros miembros de la comunidad puedan encontrarla fácilmente.

Gracias

Harshitha.

Equipo de apoyo a la comunidad.

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors