Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
| DESC_MARCA_MODELO | DESC_MODELO | ||
---|---|---|---|---|
VOLKSWAGEN | VW/CROSSFOX | CROSSFOX | ||
VOLKSWAGEN | VW/CROSSFOX GII | CROSSFOX GII | ||
VOLKSWAGEN | VW/GOL 1.0 COPA | GOL 1.0 COPA |
Pessoal, não consegui incluir um arquivo, mas a tabela acima apresenta a situação, como solicitado pelo colega abaixo.
No caso, tenho apenas 2 grupos: FOX e GOL. Quero criar uma lista com apenas esses dois valores
Olá Pessoal !
Como usar ApplyMap neste caso:
LOAD Codigo_MarcaModelo,
MarcaModelo_Id,
MarcaModelo_Desc,
if(Index(MarcaModelo_Desc,' GOL ') or Index(MarcaModelo_Desc,'/GOL '),'GOL',
if(Index(MarcaModelo_Desc,' PALIO ') or Index(MarcaModelo_Desc,'/PALIO '),'PALIO',
if(Index(MarcaModelo_Desc,' AGRALE ') or Index(MarcaModelo_Desc,'/AGRALE '),'AGRALE',
if(Index(MarcaModelo_Desc,' COROLLA ') or Index(MarcaModelo_Desc,'/COROLLA '),'COROLLA',
if(Index(MarcaModelo_Desc,' VOYAGE ') or Index(MarcaModelo_Desc,'/VOYAGE '),'VOYAGE'
))))) as saida
FROM
[T_MarcaModelo.qvd](qvd);
Obrigado
Jamir,
Acredito que a solução mencionada por afurtado resolve seu problema.
Utiliza o Replace para remover a barra.
Como você deseja saber como utilizar o ApplyMap, vou colocar um exemplo abaixo:
Estados:
mapping
LOAD * Inline [
UF, Estado
SP, São Paulo
RS, Rio Grande do Sul
PE, Pernambuco
...
] ;
ApplyMap('Estados', UF)
Onde: Estados = Nome da Tabela de Mapeamento e UF = Campo a ser Mapeado
Jamir
Não consigo montar nenhuma lógica que simplifique o seu trabalho. O que vejo como problema é você não conseguir garantir que o valor do campo MarcaModelo_Desc conterá somente o nome do modelo. O ideal seria ter a informação do modelo, mas aí já resolve o problema...
tentou usar o replace() ?
LOAD Codigo_MarcaModelo,
MarcaModelo_Id,
MarcaModelo_Desc,
replace(MarcaModelo_Desc, '/','') as saida
FROM
[T_MarcaModelo.qvd](qvd);
Olá pessoal!
Gostaria de explicar melhor o caso:
Citei apenas 5 modelos (GOL,PALIO,AGRALE,COROLLA,VOYAGE) porém precisarei de mais uns 50 e pode ser que apareçam 1 a cada mês. Então, penso que teria uma tabela (com os modelos, os 50 e mais os novos, ou seja, instável) e outro LOAD na t_marcamodelo, mas substituindo os valores.
Me orientaram a usar o ApplyMap, por isso estou solicitando suporte.
Obrigado.
Jamir
Você pode nos enviar uma base com todos os modelos de carros? Acredito que vai facilitar a busca por uma solução.
Jamir,
Acredito que a solução mencionada por afurtado resolve seu problema.
Utiliza o Replace para remover a barra.
Como você deseja saber como utilizar o ApplyMap, vou colocar um exemplo abaixo:
Estados:
mapping
LOAD * Inline [
UF, Estado
SP, São Paulo
RS, Rio Grande do Sul
PE, Pernambuco
...
] ;
ApplyMap('Estados', UF)
Onde: Estados = Nome da Tabela de Mapeamento e UF = Campo a ser Mapeado
Pensei em algo como:
Modelo:
mapping
LOAD * Inline [
codigo,nome
1 , GOL
] ;
LOAD Codigo_MarcaModelo,
MarcaModelo_Id,
MarcaModelo_Desc,
if(Index(MarcaModelo_Desc,' ApplyMap('Modelo', codigo) ') or Index(MarcaModelo_Desc,'/ApplyMap('Modelo', codigo) '),'ApplyMap('Modelo', codigo)',
) as saida
FROM
[T_MarcaModelo.qvd](qvd);
O código é o mesmo nos dois casos ?
Tipo: 1 Gol
1 /Gol
Se for, não precisa do IF, é só colocar direto o mapping.
ApplyMap('Modelo', codigo)
Preciso do if pq a palavra GOL está dentro de outra:
exemplos:
VW/GOL 1.0 COPA
GOL 1.0 ECOMOTION GIV
Mas os códigos deles são diferentes ou iguais ?
Se forem iguais, o ApplyMap do jeito que mencionei funciona pra você, caso seja diferente teria que usar duas funções encadeadas.
Poderia tentar assim:
SubField(MarcaModelo_Desc, Index(MarcaModelo_Desc, 'GOL'), Subfield(MarcaModelo_Desc, Index(MarcaModelo_Desc, 'GOL')+1, Index(MarcaModelo_Desc, ' ')
** Estou sem ajuda do Qlik para testar, mas acredito que seja assim.