Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Tenho a seguinte tabela e fiz os seguintes testes:
=len(TELEF_PESSOA_T)
=IF(IsNull(TELEF_PESSOA_T),'NULO', 'NÃO É NULO')
Não estou entendendo porque os campos em branco (TELEF_PESSOA_T) estão como não nulos, contando 1 caractere...
Usei o trim no script também para tirar possíveis espaços em branco e as propriedades da tabela estão assim:
Desde já, obrigada!
Bom dia Laryssa;
Realizei algumas alterações no script, só não pude testar a carga, pois não tenho os QVDs;
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';
SET HidePrefix='%SK_';
CHAMADOS:
LOAD
COD_EMPRESA AS %SK_EMPRESA,
COD_CORPORATIVO_PESSOA_T AS %SK_PESSOA,
CODIGO_DO_CHAMADO_T,
timestamp(DATA_DO_CHAMADO_T) AS DATA_DO_CHAMADO_T,
Right(dayname(DATA_DO_CHAMADO_T),4) AS Ano_T,
MID(DAYNAME(DATA_DO_CHAMADO_T),4,2) AS Mes_T,
TIPO_DE_PUBLICO_T,
PROTOCOLO_ANS_T,
MANIFESTACAO_T,
GRUPO_MANIFESTACAO_T,
TIPO_MANIFESTACAO_T,
NM_FUNCIONARIO_ABRIU_T,
NOME_FUNCIONARIO_T,
AREA_FUNCIONARIO_T,
AREA_ABRIU_T,
timestamp(DATA_CONCLUSAO_CHAMADO_T) AS DATA_CONCLUSAO_CHAMADO_T,
dayname(PREVISAO_RESOLUCAO_T) AS PREVISAO_RESOLUCAO_T,
FORMA_CONTATO_T,
RAMAL_PESSOA_T,
PESS_PESS_NM_PESSOA_T,
GRAU_SATISFAÇÃO_T,
timestamp(DATA_HORA_ENVIO_PESSOA_T) AS DATA_HORA_ENVIO_PESSOA_T,
timestamp(DATA_HORA_RESP_PESSOA_T) AS DATA_HORA_RESP_PESSOA_T
FROM H:\Backup-14022017\QVDSTESTE\TABELAPRINCIPAL.qvd (qvd) Where COD_EMPRESA = 21;
DIM_PESSOAS:
LOAD
COD_CORPORATIVO_PESSOA_T AS %SK_PESSOA,
COD_CORPORATIVO_PESSOA_T,
If(Concat(Distinct TELEF_PESSOA_T)>1,
Concat(Distinct TELEF_PESSOA_T, '/')) AS 'TELEF_PESSOA_T'
Group By COD_CORPORATIVO_PESSOA_T;
LOAD
COD_CORPORATIVO_PESSOA_T,
DDD_PESSOA_T&' '&TELEF_PESSOA_T AS 'TELEF_PESSOA_T'
FROM H:\Backup-14022017\QVDSTESTE\TABELAPRINCIPAL.qvd (qvd) Where Exists(COD_EMPRESA);
DIM_EMPRESAS:
LOAD DISTINCT
COD_EMPRESA AS %SK_EMPRESA,
COD_EMPRESA,
DESC_EMPRESA
FROM
(qvd) Where Exists(COD_EMPRESA);
Laryssa
Tente mudar o DISTINCT do telefone para o Load inicial no arquivo QVD. No load precedente deixe somente o concat.
Outra coisa, não relacionada ao seu problema: se possível evite o uso do Preceding Load. Eu já havia observado, e depois verifiquei que o rwunderlich também escreveu sobre o assunto (veja aqui), que ele é (pelo menos hoje) mais lento que ler uma tabela em memória. Assim, passe o Preceding Load para um load em tabela normal residente.
Não sei porque a minha resposta ficou marcado "sendo moderado"
Então segue em anexo
Como o Márcio falou, tem como otimizar, me atentei pouco para o seu caso, pois vejo que está iniciando e presei em não aumentar a complexidade nesta fase, porém recomendo observar as boas práticas;
Melhorei mais um pouco o script,
Versão: 2.3
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';
SET HidePrefix='%SK_';
temp_CHAMADOS:
LOAD
COD_EMPRESA AS '%SK_EMPRESA',
COD_CORPORATIVO_PESSOA_T AS '%SK_PESSOA',
CODIGO_DO_CHAMADO_T,
timestamp(DATA_DO_CHAMADO_T) AS 'DATA_DO_CHAMADO_T',
Right(dayname(DATA_DO_CHAMADO_T),4) AS 'Ano_T',
MID(DAYNAME(DATA_DO_CHAMADO_T),4,2) AS 'Mes_T',
TIPO_DE_PUBLICO_T,
PROTOCOLO_ANS_T,
MANIFESTACAO_T,
GRUPO_MANIFESTACAO_T,
TIPO_MANIFESTACAO_T,
NM_FUNCIONARIO_ABRIU_T,
NOME_FUNCIONARIO_T,
AREA_FUNCIONARIO_T,
AREA_ABRIU_T,
timestamp(DATA_CONCLUSAO_CHAMADO_T) AS 'DATA_CONCLUSAO_CHAMADO_T',
dayname(PREVISAO_RESOLUCAO_T) AS 'PREVISAO_RESOLUCAO_T',
FORMA_CONTATO_T,
RAMAL_PESSOA_T,
PESS_PESS_NM_PESSOA_T,
GRAU_SATISFAÇÃO_T,
timestamp(DATA_HORA_ENVIO_PESSOA_T) AS 'DATA_HORA_ENVIO_PESSOA_T',
timestamp(DATA_HORA_RESP_PESSOA_T) AS 'DATA_HORA_RESP_PESSOA_T',
DDD_PESSOA_T&' '&TELEF_PESSOA_T AS 'TELEF_PESSOA_T'
FROM H:\Backup-14022017\QVDSTESTE\TABELAPRINCIPAL.qvd (qvd) Where COD_EMPRESA = 21;
CHAMADOS:
NoConcatenate LOAD
[%SK_EMPRESA],
[%SK_PESSOA],
CODIGO_DO_CHAMADO_T,
DATA_DO_CHAMADO_T,
Ano_T,
Mes_T,
TIPO_DE_PUBLICO_T,
PROTOCOLO_ANS_T,
MANIFESTACAO_T,
GRUPO_MANIFESTACAO_T,
TIPO_MANIFESTACAO_T,
NM_FUNCIONARIO_ABRIU_T,
NOME_FUNCIONARIO_T,
AREA_FUNCIONARIO_T,
AREA_ABRIU_T,
DATA_CONCLUSAO_CHAMADO_T,
PREVISAO_RESOLUCAO_T,
FORMA_CONTATO_T,
RAMAL_PESSOA_T,
PESS_PESS_NM_PESSOA_T,
GRAU_SATISFAÇÃO_T,
DATA_HORA_ENVIO_PESSOA_T,
DATA_HORA_RESP_PESSOA_T
Resident temp_CHAMADOS;
DIM_PESSOAS:
NoConcatenate LOAD
[%SK_PESSOA],
[%SK_PESSOA] AS 'COD_CORPORATIVO_PESSOA_T',
If(Concat(Distinct TELEF_PESSOA_T)>1,
Concat(Distinct TELEF_PESSOA_T, '/')) AS 'TELEF_PESSOA_T'
Group By [%SK_PESSOA];
LOAD
[%SK_PESSOA],
TELEF_PESSOA_T
Resident temp_CHAMADOS;
Drop Table temp_CHAMADOS;
DIM_EMPRESAS:
LOAD
[%SK_EMPRESA],
COD_EMPRESA,
DESC_EMPRESA
Where Exists([%SK_EMPRESA]);
LOAD DISTINCT
COD_EMPRESA AS '%SK_EMPRESA',
COD_EMPRESA,
DESC_EMPRESA
FROM
(qvd);
Novamente, a mensagem acima sendo moderado rsrs;
Segue em anexo, script mais otimizado, porém por priori não aumentei a complexidade para o seu caso, pois vejo que é iniciante, porém recomendo observar as boas práticas como mencionado pelo Márcio. A modelagem também poderia ser no modelo estrela.
Mario, irei testar.
Dou um feedback hoje!
Sim, sou iniciante rs muito que aprender!
Mais uma vez, obrigada
Laryssa, fiz uma pequena correção;
O Distinct tem que ficar de fato dentro do Concat neste caso para não repetir os registros de telefone iguais no agrupamentos
Bom dia Laryssa
Conseguiu resolver o seu problema?
Se sim, marque a resposta final como correta para nos ajudar a manter a comunidade organizada.
Boa tarde Mario,
desculpe a demora da resposta.
Testei o que você me enviou e deu o seguinte erro: Campo não encontrado - <%SK_EMPRESA> .
Laryssa,
O erro foi na dimensão EMPRESA;
Segue correção em anexo;
Também vou editar o script acima para não precisar aguardar aprovação do moderador.