Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
g_gaidex
Contributor
Contributor

Contagem de Clientes Ativos

Boa Tarde colegas,

Estou com uma dúvida que vem consumindo muito tempo do meu trabalho. Preciso saber quantos clientes ativos eu tenho na minha base de dados, o período do "ativo" é de 30, 60, 90 e 120 dias, são 4 KPI´s diferentes que estou fazendo.

Eu carrego diariamente a tabela de vendas, onde consta o "Numero Cliente", "Data Compra".

Sou novo na ferramenta e estou tendo muitas dificuldades em encontrar o valor correto, já usei algumas formulas e não funcionaram, como:

count({$<Year=, Month=, [Numero Cliente]={"=max({$<[Valor Compra SV]={'>0'}, Year=, Month=,

OrderDate={'<=$(=max(DataCompra))'}>} DataCompra)>=$(=max(DataCompra)-30)"}>}

distinct [Numero Cliente])

Count({<DataCompra={"=$(=date(today()-90))"}>}Distinct ([CartãoCompra])).

Obrigado.

1 Solution

Accepted Solutions
felipedl
Partner - Specialist III
Partner - Specialist III

Eu prefiro fazer esse tipo de questão à nivel de script,

Segue um exemplo em Qlikview de como fazer, com os KPIs que você precisa:

Mapping

DescDias:

Load * Inline

[

Id,Desc

1,30 Dias

2,60 Dias

3,90 Dias

4,120 Dias

0,Fora

];

dados:

Load

IdCliente,

DataCompra,

[Flag dias],

ApplyMap('DescDias',[Flag dias]) as Descrição;

Load

IdCliente,

DataCompra,

if

(

num(DataCompra)>=num(AddMonths(Today(),-1)),

1,

if (num(DataCompra)>=num(AddMonths(Today(),-2)) And num(DataCompra)<num(AddMonths(Today(),-1)),

     2,

     if (num(DataCompra)>=num(AddMonths(Today(),-3)) And num(DataCompra)<num(AddMonths(Today(),-2)),

          3,

          if (num(DataCompra)>=num(AddMonths(Today(),-4)) And num(DataCompra)<num(AddMonths(Today(),-3)),

               4,

               0

          )

     )

)

) as [Flag dias];

Load * Inline

[

IdCliente,DataCompra

1,01/01/2017

1,02/01/2017

2,01/07/2017

2,01/08/2017

3,01/06/2017

4,01/04/2017

5,01/05/2017

4,01/06/2017

3,01/05/2017

6,01/08/2017

8,05/08/2017

];

E as expressões dos KPIs serão por exemplo:

='30 Dias: '& count({<[Flag dias]={1}>}IdCliente)

='60 Dias: '& count({<[Flag dias]={2}>}IdCliente)

='90 Dias: '& count({<[Flag dias]={3}>}IdCliente)

='120 Dias: '& count({<[Flag dias]={4}>}IdCliente)

Felipe.

View solution in original post

3 Replies
Marcio_Campestrini
Specialist
Specialist

Guilherme

Tente:

Count({<DataCompra = {"$(=Date(Today()-90))"}>} Distinct ([Numero Cliente]))
Márcio Rodrigo Campestrini
felipedl
Partner - Specialist III
Partner - Specialist III

Eu prefiro fazer esse tipo de questão à nivel de script,

Segue um exemplo em Qlikview de como fazer, com os KPIs que você precisa:

Mapping

DescDias:

Load * Inline

[

Id,Desc

1,30 Dias

2,60 Dias

3,90 Dias

4,120 Dias

0,Fora

];

dados:

Load

IdCliente,

DataCompra,

[Flag dias],

ApplyMap('DescDias',[Flag dias]) as Descrição;

Load

IdCliente,

DataCompra,

if

(

num(DataCompra)>=num(AddMonths(Today(),-1)),

1,

if (num(DataCompra)>=num(AddMonths(Today(),-2)) And num(DataCompra)<num(AddMonths(Today(),-1)),

     2,

     if (num(DataCompra)>=num(AddMonths(Today(),-3)) And num(DataCompra)<num(AddMonths(Today(),-2)),

          3,

          if (num(DataCompra)>=num(AddMonths(Today(),-4)) And num(DataCompra)<num(AddMonths(Today(),-3)),

               4,

               0

          )

     )

)

) as [Flag dias];

Load * Inline

[

IdCliente,DataCompra

1,01/01/2017

1,02/01/2017

2,01/07/2017

2,01/08/2017

3,01/06/2017

4,01/04/2017

5,01/05/2017

4,01/06/2017

3,01/05/2017

6,01/08/2017

8,05/08/2017

];

E as expressões dos KPIs serão por exemplo:

='30 Dias: '& count({<[Flag dias]={1}>}IdCliente)

='60 Dias: '& count({<[Flag dias]={2}>}IdCliente)

='90 Dias: '& count({<[Flag dias]={3}>}IdCliente)

='120 Dias: '& count({<[Flag dias]={4}>}IdCliente)

Felipe.

Clever_Anjos
Employee
Employee

Via set analsys não vai funcionar porque a expansão das expressões (max(DataCompra), por exemplo) é feita a nivel de hipercubo, não considerando o cliente.

A melhor saida é criar um flag no script conforme sugestão do felipedl