Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Compra combinada de categorías

Tengo datos de muestra como se muestra a continuación


CustomerId BillId Mes Ventas de artículos

abecedario1Enepollo100
abecedario2EneCarnero100
Xyz3EneHuevos50
Xyz3Enepollo100
sab4EneCarnero400
frq5EneHuevos200
poste6Enepollo200
poste6EneCarnero300
poste6EneHuevos50


Necesito la salida deseada como

sólo pollo - 0 cliente
solo huevos - 1 cliente
sólo Cordero - 1 cliente
Huevos de gallina - 1 cliente
Pollo-Cordero - 1customer
Huevo-Cordero - 0 clientes
pollo-Cordero-Huevos - 1customer

Por favor, ayúdame ,¿cómo debo crear la lógica para esto?

Como soy nuevo en power bi
Gracias

  • Hola, @Shafe

    No creo que la cortadora mensual tenga un impacto significativo en el momento de generar los resultados. El tiempo es demasiado largo principalmente porque tiene demasiados datos, supongo que el modo de conexión de los datos de su modelo es de importación. Cambiar el modo de conexión de datos a consulta directa o conexión en vivo puede ayudar.


    Hay una segmentación de datos mensual que proporciona una lógica de cálculo adicional. Si no lo necesita, simplemente elimine la declaración de juicio sobre la cortadora mensual en las medidas anteriores.
    Gustar:

    _I_Item = 
    var _I_Item=SUMMARIZE(FILTER(ALL('Table'),'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _I_Item_Month=SUMMARIZE(FILTER(ALL('Table'),'Table'[Month]=MAX('Table'[Month])&&'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    
    var _if_Month=
        CONCATENATEX(_I_Item_Month,[Item ],","),CONCATENATEX(_I_Item,[Item ],",")
    return _if_Month

    ¿Es útil para usted la publicación anterior? Si lo hace, ¿podría marcar la publicación que ayuda como Respondida? Ayudará a los demás en la comunidad a encontrar la solución fácilmente si enfrentan el mismo problema con usted. Gracias. 😀

    Saludos
    Equipo de apoyo a la comunidad _ Zeon Zheng

    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

7 Replies

  • El enlace que compartiste, lo he revisado. pero mi escenario es diferente.
    Por favor, vea lo que necesito la respuesta. Es diferente de la canasta del mercado

  • En ella, @Shafe

    Cree una tabla de resumen de la siguiente manera:

    ID-Item = SUMMARIZE(ALL('Table'),[CustomerId],[BillId],[Item ])

    Cree las siguientes medidas:

    _isOnly = 
    var _M_Item=SUMMARIZE(ALLSELECTED('ID-Item'),[Item ])
    var _I_Item=SUMMARIZE(FILTER(ALL('Table'),'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _except_L=COUNTROWS(EXCEPT(_M_Item,_I_Item))
    var _except_R=COUNTROWS(EXCEPT(_I_Item,_M_Item))
    var _isOnly=IF(_except_L=0&&_except_R=0,1,0)
    return _isOnly
    _getID = 
    var _getID=SUMMARIZE(FILTER('Table',[_isOnly]=1),'Table'[CustomerId])
    return CONCATENATEX(_getID,[CustomerId],",")
    _countID = 
    var _getID=SUMMARIZE(FILTER('Table',[_isOnly]=1),'Table'[CustomerId])
    return COUNTAX(_getID,[CustomerId])

    Resultado:

    Consulte el archivo adjunto a continuación para obtener más detalles.

    Espero que esto ayude.

    Saludos
    Equipo de apoyo a la comunidad _ Zeon Zheng


    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Estimado @v-angzheng-msft
      Su solución está funcionando bien.
      Pero si el cliente está comprando el próximo mes, entonces no puedo obtener el recuento mensual.
      Por ejemplo. el cliente 'abc' también ha comprado en febrero como se muestra en los siguientes datos.

      Ventas de CustomerIdBillIdMonthItem

      abecedario1Enepollo100
      abecedario2EneCarnero100
      Xyz3EneHuevos50
      Xyz3Enepollo100
      sab4EneCarnero400
      frq5EneHuevos200
      poste6Enepollo200
      poste6EneCarnero300
      poste6EneHuevos50
      sábado7Enepollo250
      sábado8EneCarnero250
      Late9EneHuevos490
      abecedario10Febpollo240
      abecedario11FebHuevos50

      ahora 'abc' ha comprado pollo y cordero en enero y
      'abc' ha comprado pollo y huevo en febrero


      Debería obtener un conteo como
      Pollo, Cordero - 1count for abc Jan
      pollo, Huevos - 1count for abc Feb

      Estoy recibiendo
      Pollo, cordero, huevos - 1 cuenta 'abc'

      Necesito un mes
      por favor, investigue esto

      Gracias por su ayuda se agradece.

  • Hola, @Shafe
    Cree otra tabla de cálculo para determinar si es mensual.

    Month =
    DATATABLE( "Month-Wise", STRING, { { "Yes" }, { "No" } } )
    

    Modifíquese las medidas anteriores de la siguiente manera:

    _I_Item = 
    var _I_Item=SUMMARIZE(FILTER(ALL('Table'),'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _I_Item_Month=SUMMARIZE(FILTER(ALL('Table'),'Table'[Month]=MAX('Table'[Month])&&'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _if_Month=
        IF(ISFILTERED('Month'[Month-Wise])&&SELECTEDVALUE('Month'[Month-Wise])="Yes"
            ,CONCATENATEX(_I_Item_Month,[Item ],","),CONCATENATEX(_I_Item,[Item ],","))
    
    return _if_Month

    _isOnly = 
    var _M_Item=SUMMARIZE(ALLSELECTED('ID-Item'),[Item ])
    var _I_Item=SUMMARIZE(FILTER(ALL('Table'),'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _I_Item_Month=SUMMARIZE(FILTER(ALL('Table'),'Table'[Month]=MAX('Table'[Month])&&'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    
    var _except_L=IF(ISFILTERED('Month'[Month-Wise])&&SELECTEDVALUE('Month'[Month-Wise])="Yes",COUNTROWS(EXCEPT(_M_Item,_I_Item_Month)),COUNTROWS(EXCEPT(_M_Item,_I_Item)))
    var _except_R=IF(ISFILTERED('Month'[Month-Wise])&&SELECTEDVALUE('Month'[Month-Wise])="Yes",COUNTROWS(EXCEPT(_I_Item_Month,_M_Item)),COUNTROWS(EXCEPT(_I_Item,_M_Item)))
    var _isOnly=IF(_except_L=0&&_except_R=0,1,0)
    
    
    return _isOnly

    Resultado:

    Consulte el archivo adjunto a continuación para obtener más detalles.

    Espero que esto ayude.

    Saludos
    Equipo de apoyo a la comunidad _ Zeon Zheng

    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Estimado @v-angzheng-msft
      Su lógica está funcionando bien. Pero debido a la tabla mensual, mis datos tardan mucho tiempo (aproximadamente medio día) en obtener resultados. Tengo más de 20 cordones de datos.
      ¿Puede sugerir otra forma en que no tengamos que poner una rebanadora mensual?
       
      Necesito la solución según la siguiente imagen de muestra

      Capture.PNG

      Por favor, ayúdame ya que estoy muy cerca
      Gracias

  • Hola, @Shafe

    No creo que la cortadora mensual tenga un impacto significativo en el momento de generar los resultados. El tiempo es demasiado largo principalmente porque tiene demasiados datos, supongo que el modo de conexión de los datos de su modelo es de importación. Cambiar el modo de conexión de datos a consulta directa o conexión en vivo puede ayudar.


    Hay una segmentación de datos mensual que proporciona una lógica de cálculo adicional. Si no lo necesita, simplemente elimine la declaración de juicio sobre la cortadora mensual en las medidas anteriores.
    Gustar:

    _I_Item = 
    var _I_Item=SUMMARIZE(FILTER(ALL('Table'),'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    var _I_Item_Month=SUMMARIZE(FILTER(ALL('Table'),'Table'[Month]=MAX('Table'[Month])&&'Table'[CustomerId]=MAX('Table'[CustomerId])),[Item ])
    
    var _if_Month=
        CONCATENATEX(_I_Item_Month,[Item ],","),CONCATENATEX(_I_Item,[Item ],",")
    return _if_Month

    ¿Es útil para usted la publicación anterior? Si lo hace, ¿podría marcar la publicación que ayuda como Respondida? Ayudará a los demás en la comunidad a encontrar la solución fácilmente si enfrentan el mismo problema con usted. Gracias. 😀

    Saludos
    Equipo de apoyo a la comunidad _ Zeon Zheng

    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.