Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal,
Estou com uma dúvida, em como fazer uma ligação entre dados do sistema com uma tabela do Excel, ou seja:
1) Mensalmente faço a extração dos dados de vendas do banco de dados do ERP, para saber o valor e para qual cliente vendemos.
2) Mensalmente recebemos um arquivo em Excel com dados de emplacamentos realizados no Brasil para saber quem adquiriu tais produtos.
Problema:
Preciso fazer um cruzamento entre essas duas base de dados e que em uma coluna me diga se é cliente SIM ou NÃO, conforme ilustração abaixo:
A lógica seria a seguinte, verificar na tabela NOTAS_VENDAS todos os NTV_CLI_CODIGO e confrontar se na tabela do Excel tem o mesmo código de cliente CLI_CODIGO (NTV_CLI_CODIGO = CLI_CODIGO), caso seja igual então na coluna 'É Cliente?' = SIM caso contrário NÃO.
SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='R$ #.##0,00;-R$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';
SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';
SET DayNames='seg;ter;qua;qui;sex;sáb;dom';
ODBC CONNECT TO BI;
// ------- Notas de Vendas ------ //
SQL SELECT
NTV_CLI_CODIGO AS CLI_CODIGO, //(Esse campo faço a ligação a tabela abaixo)
NTV_NUMERO,
NTV_DATA,
NTV_VALORLIQUIDO
FROM NOTAS_VENDAS WHERE NTV_DATA > '30.09.2015';
// ------- Banco de Dados de Emplacamentos ------ //
LOAD
PLACA,
FABRICANTE,
CLI_CODIGO
FROM
(ooxml, embedded labels, table is Plan1);
Desde já agradeço.
att,
André Tonini
André, faça por ApplyMap. Ficaria mais ou menos assim:
Banco_Emplacamento:
Mapping LOAD
CLI_CODIGO,
'SIM' as FLG_CLIENTE
FROM
ODBC CONNECT TO BI;
// ------- Notas de Vendas ------ //
Base:
LOAD
*,
ApplyMap('Banco_Emplacamento', NTV_CLI_CODIGO, 'NÃO') as FLG_CLIENTE;
SQL SELECT
NTV_CLI_CODIGO AS CLI_CODIGO, //(Esse campo faço a ligação a tabela abaixo)
NTV_NUMERO,
NTV_DATA,
NTV_VALORLIQUIDO
FROM NOTAS_VENDAS WHERE NTV_DATA > '30.09.2015';
André,
Você criar um Campo fixo no load da tabela Excel, ou na extração do BD.
LOAD
PLACA,
FABRICANTE,
CLI_CODIGO,
'S' AS FLAG
FROM
(ooxml, embedded labels, table is Plan1);
Depois você teria duas opções na dimensão ou na expressão de uma tabela.
Na Dimensão calculada voc~e colocaria
=if(flag='S','SIM','NÃO') e colocaria o rótulo “CLIENTE”
Ou faça a mesma coisa na expressão na definição dela coloque
=if(flag='S','SIM','NÃO') e colocaria o rótulo “CLIENTE” o Flag seria ‘S’ pra todos registros do excel, precisa ver se antende o flag pode ser também na sua tabela principal que deve ser a do BD, faça o teste e se tiver alguma dúvida me avise.
André, faça por ApplyMap. Ficaria mais ou menos assim:
Banco_Emplacamento:
Mapping LOAD
CLI_CODIGO,
'SIM' as FLG_CLIENTE
FROM
ODBC CONNECT TO BI;
// ------- Notas de Vendas ------ //
Base:
LOAD
*,
ApplyMap('Banco_Emplacamento', NTV_CLI_CODIGO, 'NÃO') as FLG_CLIENTE;
SQL SELECT
NTV_CLI_CODIGO AS CLI_CODIGO, //(Esse campo faço a ligação a tabela abaixo)
NTV_NUMERO,
NTV_DATA,
NTV_VALORLIQUIDO
FROM NOTAS_VENDAS WHERE NTV_DATA > '30.09.2015';
Apenas corrigindo a linha do ApplyMap (ja que o campo foi renomeado)
ApplyMap('Banco_Emplacamento', CLI_CODIGO, 'NÃO') as FLG_CLIENTE;
Yuri,
Bom dia, excelente!! deu certo muito obrigado.
abraço
André Tonini
Vinicius,
Show de bola fiz pelo seu processo e deu certo também, criando esse critério no LOAD já me deu uma luz pra outras situações que venho enfrentando!
Obrigado.
att,
André Tonini