Forum Discussion
Compra combinada de categorías
Tengo datos de muestra como se muestra a continuación
CustomerId BillId Mes Ventas de artículos
| abecedario | 1 | Ene | pollo | 100 |
| abecedario | 2 | Ene | Carnero | 100 |
| Xyz | 3 | Ene | Huevos | 50 |
| Xyz | 3 | Ene | pollo | 100 |
| sab | 4 | Ene | Carnero | 400 |
| frq | 5 | Ene | Huevos | 200 |
| poste | 6 | Ene | pollo | 200 |
| poste | 6 | Ene | Carnero | 300 |
| poste | 6 | Ene | Huevos | 50 |
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 ZhengSi 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
- Syndicate_Admin
Administrator
@Shafe, a mí me parece más un Análisis de la Cesta de Mercado
https://finance-bi.com/power-bi-basket-analysis/
https://businessintelligist.com/2017/03/27/market-basket-analysis-using-power-bi/ - Syndicate_Admin
Administrator
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 - Syndicate_Admin
Administrator
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
Administrator
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
abecedario 1 Ene pollo 100 abecedario 2 Ene Carnero 100 Xyz 3 Ene Huevos 50 Xyz 3 Ene pollo 100 sab 4 Ene Carnero 400 frq 5 Ene Huevos 200 poste 6 Ene pollo 200 poste 6 Ene Carnero 300 poste 6 Ene Huevos 50 sábado 7 Ene pollo 250 sábado 8 Ene Carnero 250 Late 9 Ene Huevos 490 abecedario 10 Feb pollo 240 abecedario 11 Feb Huevos 50 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 FebEstoy recibiendo
Pollo, cordero, huevos - 1 cuenta 'abc'
Necesito un mes
por favor, investigue esto
Gracias por su ayuda se agradece.
- Syndicate_Admin
Administrator
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 _isOnlyResultado:
Consulte el archivo adjunto a continuación para obtener más detalles.
Espero que esto ayude.
Saludos
Equipo de apoyo a la comunidad _ Zeon ZhengSi 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
Administrator
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 muestraPor favor, ayúdame ya que estoy muy cerca
Gracias
- Syndicate_Admin
Administrator
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 ZhengSi esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.