Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Ajuda SetAnalysis Conjuntos

Bom dia pessoal;

Quero fazer um gráfico assim no meu aplicativo, com uma fórmula pra cada segmento, onde teremos na ordem:

conjuntos.gif

Amarelo – clientes que so compram produtos da linha A

Azul – clientes que so compram produtos da linha B

Vermelho - clientes que so compram produtos da linha C

Laranja - clientes que so compram produtos da linha A e C

Verde - clientes que so compram produtos da linha A e B

Violeta - clientes que so compram produtos da linha B e C

Branco – clientes que compram produtos das linhas A, B e C.

Em anexo coloquei um aplicativo com algumas tabelas de exemplo, imaginam como ficariam as fórmulas ?

1 Solution

Accepted Solutions
Not applicable

Re: Ajuda SetAnalysis Conjuntos

Fiz um exemplo considerando apenas as CategoryID 6(A),7(B) e 8(C) para ficar mais simples.

Capturar.JPG.jpg

As formulas ficaram assim, acho que deu certo:

Amarelo: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Azul: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Vermelho: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Laranja: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Verde: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Roxo: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Branco: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

7 Replies
dubucha2012
Contributor II

Re: Ajuda SetAnalysis Conjutos

Para saber quantos compraram por produtos,,

//só compraram produto linha A

count({<produto_linha={'A'}>} cliente)

//só compraram produto linha A e B

count({<produto_linha={'A','B'}>} cliente)

//só compraram tudo menos produto linha A

count({<produto_linha-={'A'}>} cliente)

Basta transformar para sua aplicação..

dubucha2012
Contributor II

Re: Ajuda SetAnalysis Conjutos

Lembrando que para cada cor.. é um expressão

Not applicable

Re: Ajuda SetAnalysis Conjutos

Ola Eduardo;

Não é tão simples assim, dessa maneira ele conta quem comprou no A, mas o cliente pode ter comprado em B também....e eu quero somente tenha comprado em A.

Ah, faltou o Distinct também...

Com o exemplo que passei anexo fica mais fácil perceber o problema.

cristian_floren
New Contributor II

Re: Ajuda SetAnalysis Conjuntos

Olá Cléber,

Montei uma expressão em cima do seu modelo e funcionou, só não apliquei no gráfico.

Segue:

SUM(If(CategoryID = 1, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 2, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 3, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 4, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 5, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 6, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 7, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),

    If(CategoryID = 8, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),0)))))))))

O resultado foi o seguinte:

Not applicable

Re: Ajuda SetAnalysis Conjuntos

Bom dia Cristiano !

Apliquei aqui a sua fórmula no aplicativo do exemplo, porem num objeto de texto, que é onde terei os diversos 'segmentos' de contagem.

o primeiro objeto de texto contemplará os clientes que somente compraram produtos da Categoria 1:

=SUM(If(CategoryID = 1, If(Aggr(Count(DISTINCT CategoryID),CustomerID)=1, CategoryID),0))

Isso me mostrou o valor 2, igual ao da tabela que me passou acima.

Porém percebi que ao fazer seleção no filtro do campo CategoryID o valor exibido muda, mostrando 70 caso selecione o Categoria 1.

Além disso, como ficariam as intersecções ? Tentei fazer aqui usando AND no IF mas não funcionou...

egnaldo_sousa
Contributor II

Re: Ajuda SetAnalysis Conjuntos

Sei que não é essa a solução que vc precisa, mas talvez possa te ajudar.

us-b.demo.qlik.com/detail.aspx?appName=Prescription%20Tracker.qvw

obs: Incluir o "http:"

Abs.

Not applicable

Re: Ajuda SetAnalysis Conjuntos

Fiz um exemplo considerando apenas as CategoryID 6(A),7(B) e 8(C) para ficar mais simples.

Capturar.JPG.jpg

As formulas ficaram assim, acho que deu certo:

Amarelo: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Azul: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Vermelho: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Laranja: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Verde: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = E ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Roxo: =count (distinct  {<CustomerID = E ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )

Branco: =count (distinct  {<CustomerID = P ({<CategoryID ={"6"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"7"}>} CustomerID ) >*<CustomerID = P ({<CategoryID  = {"8"}>} CustomerID ) > } CustomerID )