Filtrado dinámico

Un usuario Pregunto ✅

Prabunathan

Hola,

Tengo una situación en la que tengo que extraer las transacciones que ocurrieron debido a una promoción específica (por ejemplo, una promoción de cheques regalo). De los millones de transacciones, tengo que filtrar las transacciones que tienen una combinación de «Artículo» + «Vale de regalo».

El siguiente ejemplo ilustra mejor el requisito.

Fecha ID de transacción Código del objeto Descripción del Artículo Cant.
01-dic-17 A001 PH001 Teléfono Asus X001 3
01-dic-17 A001 GV100 Vale Gif 100 3
04-dic-17 A002 PH001 Teléfono Asus X001 6
03-dic-17 A003 PH001 Teléfono Asus X001 4
03-dic-17 A003 GV100 Vale Gif 100 4
04-dic-17 A004 WM001 Lavadora B001 8
02-dic-17 A005 WM001 Lavadora B001 9
02-dic-17 A005 GV100 Vale Gif 100 9
EJEMPLO 1
FILTRAR
# de PH001 Unidades vendidas bajo promoción GV (es decir, cantidad total donde una ID de transacción contiene PH001 y líneas de pedido GV100)
RESULTADO ID de transacción Cant.
A001 3
A003 4
EJEMPLO 2
FILTRAR
# de WM001 Vendido bajo Promoción GV (es decir, Cantidad total donde una ID de transacción contiene WM001 + Líneas de pedido GV100)
RESULTADO ID de transacción Cant.
A005 9

Necesito seleccionar el «Código de artículo» mediante un filtro para obtener el extracto de los ID de transacción donde el Criterea de ventas es Artículo + Vale de regalo.

Gracias de antemano por su orientación.

Prabunathn

estirar

En respuesta a Prabunathan

Disculpas, no leí los ejemplos.

¿El código del artículo es un filtro de carga o un cortador de todos los datos?

Si es un segmentador, agregue una medida como esta y filtre por el segmentador para el código del artículo y en el panel de filtro HasGV> 0

HasGV = 
VAR GV = "GV100"
RETURN
    CALCULATE (
        COUNT ( Trans[Transaction Id] ),
        FILTER (
            ALL ( Trans ),
            Trans[Transaction Id] = MAX ( Trans[Transaction Id] )
                && Trans[Item Code] = GV
        )
    )

estirar

En respuesta a Prabunathan

Sí, el cálculo no funciona para el número de pedido, sino para toda la tabla.

Probé una táctica diferente usando una tabla de resumen. Aquí hay otro documento

https://1drv.ms/u/s!Aln7Q7AFJHneiW2FVW26L2xmf6OQ

Quizás esta página ayude a su uso, ya que parece resolver un problema similar.

http://www.daxpatterns.com/basket-analysis/

Shashankhegde

¿Cómo puedo configurar el filtrado dinámico cuando tengo el siguiente escenario?

Digamos que tengo, Mercados y tengo Unidades de producción

Quiero mostrar de forma selectiva los datos de mis empleados con el siguiente tipo de acceso

Tipo 1 – Pertenece al mercado (se hace fácilmente)

Tipo 2: pertenecer a la unidad de producto (fácil de hacer)

Tipo 4: acceso global independientemente del mercado o la unidad de producto

Tipo 3: pertenecer a un mercado específico y una unidad de producto específica

Por ejemplo, tengo un empleado que pertenece a Market – America y es parte de la Unidad de producto 1 y quiero mostrar solo los datos de NAM -> Unidad de producto 1 ¿Pueden ayudarme sobre cómo se puede implementar el Tipo 3?

estirar

¿Están los datos en columnas? Si es así, puede filtrar la descripción que comienza con un vale de regalo

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("vZJda8IwFIb/ykt3szEdra37uOywc0ILndYPEC9CG2dAEzCRsX+/NLG6QutgjEHLgffkOec9J1kuHdfrDmje9R6cjhO6rqdD+mpjKA8S6UZwioVVfGfVaUSGM891y8jWmIlDvqF7WOWIBDWkd7HLvUX8GuJfRII2pN1Y0GQs0GGe2JpzIjeMvyMhuY4Uz1Z+tFyvxvV/5p7auHaLFkG0CJM0joCyDGp/mX8ZxVk0bkxdQaxhtoYpZ0piIrYFDrzQLYYzpHuxE4oJjmuwO4pMKLItkTf1iQ/tg4JA7QmXJDfHRgPkgivCuDyWJbyAGQDbclam6E7ipnRw/swQjf7G0WQaZ0cpqzXSgnZxOllxYfUQGxK+udVTolpb71dbM7f5l/uyBW//e1t9846qRGOnb8rqCw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Date = _t, #"Transaction Id" = _t, #"Item Code" = _t, #"Item Description" = _t, Qty = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type text}, {"Transaction Id", type text}, {"Item Code", type text}, {"Item Description", type text}, {"Qty", Int64.Type}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each Text.StartsWith([Item Description], "Gif Voucher") or Text.StartsWith([Item Description], "Gift Voucher"))
in
    #"Filtered Rows"

Prabunathan

En respuesta a estirar

Hola señor,

Gracias por tu orientación. Puede ser que no fui específico en mi pregunta en la publicación anterior.

De hecho, necesito filtrar la tabla por un criterio de búsqueda por Artículos, y la tabla de resultados debe tener los ID de transacción que tienen el «artículo» específico + «Vales de regalo» en ellos.

No es un requisito obtener el total de los vales de regalo emitidos.

Gracias por adelantado.

Prabunathan

estirar

En respuesta a Prabunathan

Disculpas, no leí los ejemplos.

¿El código del artículo es un filtro de carga o un cortador de todos los datos?

Si es un segmentador, agregue una medida como esta y filtre por el segmentador para el código del artículo y en el panel de filtro HasGV> 0

HasGV = 
VAR GV = "GV100"
RETURN
    CALCULATE (
        COUNT ( Trans[Transaction Id] ),
        FILTER (
            ALL ( Trans ),
            Trans[Transaction Id] = MAX ( Trans[Transaction Id] )
                && Trans[Item Code] = GV
        )
    )

Prabunathan

En respuesta a estirar

Hola

Gracias y funciona fantástico.

estirar

En respuesta a Prabunathan

Estupendo.

No hay problema.

Prabunathan

En respuesta a estirar

Hola señor,

Disculpas por molestarte de nuevo. Aunque probé su solución en un trabajo de muestra, no pude aplicar su consejo y me perdí en el DAX. No estoy familiarizado con VAR, FILTROS en DAX.

Es difícil para mí narrar mi requisito, por lo tanto, estoy compartiendo un Pbix de muestra que puede ayudarlo a comprender mi requisito y corregir mi sintaxis de medida DAX.

https://www.dropbox.com/s/ablz8s4681ospwt/Sample.pbix?dl=0

Agradezco tu apoyo.

Saludos

Prabu

estirar

En respuesta a Prabunathan

Parece un error tipográfico en el número de cupón. Es ZO no Z0

HasGV1 = 
VAR GV = "ZOTGVCB100ISM"
RETURN
    CALCULATE (
        COUNT ( MASTER[Order No. ] ),
        FILTER (
            ALL ( MASTER ),
            MASTER[Order No. ] =  MAX( MASTER[Order No. ] )
                && MASTER[Item] = GV
        )
    )

Las variables son fáciles y hacen que el código sea un poco más fácil de leer un cambio, especialmente si usa valores varias veces.

https://www.sqlbi.com/blog/marco/2017/09/12/the-easiest-way-to-start-using-variables-in-dax/

https://docs.microsoft.com/en-us/power-bi/guided-learning/introductiontodax#step-4

https://powerbi.tips/2017/05/using-variables-within-dax/

Prabunathan

En respuesta a estirar

Hola señor,

Gracias de nuevo. Le pido que me devuelva el archivo Pbix con el filtro en acción.

Intenté después de corregir el código, pero la tabla de matriz todavía muestra TODOS los Id. De pedido que contienen ZOTGVCB100ISM, mientras que necesito que la tabla de matriz resultante muestre solo los Id. De pedido filtrados que contienen AMBOS elementos «Samsung SP N950» + «ZOTGVCB100ISM».

Saludos

estirar

En respuesta a Prabunathan

Sí, el cálculo no funciona para el número de pedido, sino para toda la tabla.

Probé una táctica diferente usando una tabla de resumen. Aquí hay otro documento

https://1drv.ms/u/s!Aln7Q7AFJHneiW2FVW26L2xmf6OQ

Quizás esta página ayude a su uso, ya que parece resolver un problema similar.

http://www.daxpatterns.com/basket-analysis/

Prabunathan

En respuesta a estirar

Hola señor,

Gracias . Este funcionó perfecto y gracias una vez más por todos los enlaces proporcionados.

Saludos

Prabu

Deja un comentario

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