Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Tenho a minha relação de clientes, cada um possui um valor de limite de compra, estou gerando uma tabela com as dimensões cliente e mês, e as expressões "valor comprado", e "% representatividade do valor sobre o limite", está calculando corretamente cada um dos meses da dimensão, agora estou querendo aplicar filtros pela representatividade, por exemplo, listar somente os clientes em que o valor comprador está representando menos de 50% do limite, estou aplicando esta condicional na expressão, para gerar os dados somente se o cálculo for menor que os 50%, porém, ele lista para mim somente os meses que atendem a condição e eu gostaria que fossem listados todos os meses dos clientes em que pelo menos um dos meses ficou abaixo dos 50% (atendeu a condição), para que consiga avaliar todos os meses deste cliente que em algum momento ficou abaixo de 50%. Por exemplo:
Cliente Jan Fev Mar
A 45% 55% 58%
B 80% 85% 75%
C 51% 40% 35%
Ao aplicar o filtro dos menos de 50% de representatividade, retorna a seguinte informação:
Cliente |Jan |Fev |Mar
A |45%| |
C | |40%| 35%
E eu gostaria que o cliente se enquadrasse na condição em pelo menos um dos meses, tivesse os dados de todos os meses selecionados, ficando desta forma:
Cliente Jan Fev Mar
A 45% 55% 58%
C 51% 40% 35%
Isso para que eu consiga avaliar se aquele mês em específico foi anormal, ou se todos os meses ele fica próximo dos 50%.
Leandro,
Se for possível uma solução back-end isso resolveria:
TABELA:
LOAD
*,
If(RangeMin(Jan,Fev,Mar)<50,'Menor','Maior') AS Flag_Menor_50;
LOAD * INLINE [
Cliente,Jan,Fev,Mar
A,45,55,58
B,80,85,75
C,51,40,35
];
Resultado:
Se essa solução não for possível ou ainda, não for a que deseja, mande um app de exemplo para melhor te ajudar.
Abs e Sucesso!
Bom dia Thiago,
Não consegui aplicar no meu script este load, Abaixo segue um modelo do script que estou utilizando, e as expressões que estou utilizando na tabela.
Script:
Clientes:
LOAD * Inline[
Cliente, Cliente_Nome, Limite_Convenio, Limite_Crediario, Limite_Cheque
1001, Cliente 001, 1500, 800,
1005, Cliente 002, 1800, 700,
1006, Cliente 003, 1100, 800, 500
1107, Cliente 004, 1000, 800, 1000
1108, Cliente 005, , , 600, 700
1109, Cliente 006, , , 500, 700
1110, Cliente 007, , , , 1000];
Tipo_Documentos:
LOAD * Inline[
Tipo, Desc_Documento, Tipo_Limite
CV, Convênio, Convenio
CR, Crediário, Crediario
CH, Cheque, Cheque
CP, Cheque, Pré Cheque];
Documentos:
LOAD * Inline[
Numero, Serie, Tipo, Valor_Prestacao, Cliente, Data
10014, 1, CV, 300, 1001, 15/01/17
10015, 1, CV, 375, 1001, 15/01/17
10016, 1, CV, 1100, 1005, 16/01/17
10017, 1, CV, 660, 1006, 17/01/17
10018, 1, CV, 700, 1107, 18/01/17
10019, 1, CV, 800, 1001, 10/02/17
10020, 1, CV, 1100, 1005, 10/02/17
10021, 1, CV, 660, 1006, 10/02/17
10022, 1, CV, 450, 1107, 10/02/17
10023, 1, CV, 600, 1001, 30/03/17
10024, 1, CV, 1200, 1005, 31/03/17
10025, 1, CV, 520, 1006, 30/03/17
10026, 1, CV, 480, 1107, 31/03/17];
LET v_Data_Inicial = MakeDate(year(Today())-13);
LET v_Data_Final = MakeDate(year(Today()),12,31);
//-------------------- CALENDÁRIO - DATA DE CONTABILIZAÇÃO --------------------
Calendario_Contabilizacao:
LOAD Date(data) as Data
,Day(data) as dia
,Capitalize(Month(data)) as mes_abrev
,Num(Month(data)) as mes
,Year(data) as ano
,DayNumberOfQuarter(data) as dia_trimestre
,DayNumberOfYear(data) as dia_ano
,Date(DayStart(data),'DD.MMM') as dia_mes
,MonthName(data) as mes_ano
,WeekName(data) as ano_semana
,QuarterName(data) as quarter
,Week(data) as semana
,Capitalize(WeekDay(data)) as dia_semana
,Num(WeekDay(data)) as dia_semana_num
,ceil(Month(data)/3)&'º Trim' as trimestre
,If(WeekDay(data) = 'sáb', 0,
If(WeekDay(data) = 'dom', 0, 1)) as dia_util;
LOAD
Date(MakeDate(year(Today()),12,31)- Recno()+1,'DD/MM/YYYY') as data
AUTOGENERATE(v_Data_Final-v_Data_Inicial+1);
Tabela:
Dimensões:
Cliente
Limite Convênio
Mês
Imagem 1: Listando todos os dados
Expressões:
Utilizado:
Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao))
% Limite:
(Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao))
/Sum(Limite_Convenio))
Imagem 2: Listando os dados com filtro por % de representatividade no total do limite
Expressões:
Utilizado:
If((Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao))
/Sum(Limite_Convenio)) <= 0.5 ,
Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao)))
% Limite:
If((Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao))
/Sum(Limite_Convenio)) <= 0.5 ,
Sum(If(Tipo_Limite = 'Convenio', Valor_Prestacao))
/Sum(Limite_Convenio))
Desta forma estou passando o parâmetro para ele calcular somente se o valor for maior que 50%, porém precisaria que fossem listados todos os dados dos clientes que em algum mês tivesse valor menor que 50%, nesta segunda tabela, está correto carregar somente estes três clientes, porém, queria que fossem listados todos os valores para estes clientes.
Abraços.