Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos
Espero me puedan ayudar
Quiero multipicar un tipo de cambio por una cantidad el problema es que el tipo de cambio lo tengo en una tabla y la cantidad en otra tabla intente hacerlo con esl script de abajo pero... me marca que mi campo de moneda no existe en el qvd donde tengo mi cantidad.No se si exista alguna condicion o instruccion que me ayude a poder usar estos dos campos aunque sean de diferentes tablas
Saludos
Este es el script que estoy utilizando
[VBRK]:
LOAD
VBRK_Moneda as VBRK_Moneda,
VBRK_TipoDeCambio as VBRK_TipoDeCambio
FROM [LIB://PRD QVD/VBRK.qvd](qvd);
//------------------------------------5--------------------------------------------
[KONV]:
LOAD
"KONV_Valor Condicion" as KONV_ValorCondicion,
if(Match("VBRK_Moneda", 'USD','EUR') > 0,
"KONV_Valor Condicion" * "VBRK_TipoDeCambio",
"KONV_Valor Condicion" * 1) AS P_ValorCondicion_ValorPesosMexicanos
FROM [LIB://PRD QVD/KONV.qvd](qvd)
En las tablas que tienes necesitas tener una columna similar. Por ejemplo
Tabla:
Ordenid,
Ventas
From ventas.qvd
Tabla2:
Ordenid,
Producto
From productos.qvd
Ordenid es la columna asocia o asociacion de las tablas. Hay varias formas de hacer la agregacion que puedes hacer, si es que tienes las columnas de associasion.
Por ejemplo puedes usar applymap,mira el video de abajo
Watch "ApplyMap Function in Qlikview" on YouTube
Tambien puedes usar concanate y crear una mesa vertual (resident load)
Tabla1:
Orderid,
Ventas,
Impuestos
Concanate
Tabla2:
Ordenid
Producto
Mesavertual:
Load
Ordenide,
Ventas * impuestos as 'total',
Producto
Resident nombredemesa group by
Tambien cuando haces algun tipo de agregacion tienes que usar group by
Esto es una ide que puedes usar te recomiendo mirar in you tube, resident load, concanate, y como usar group by in qlikview.
Suerte
En las tablas que tienes necesitas tener una columna similar. Por ejemplo
Tabla:
Ordenid,
Ventas
From ventas.qvd
Tabla2:
Ordenid,
Producto
From productos.qvd
Ordenid es la columna asocia o asociacion de las tablas. Hay varias formas de hacer la agregacion que puedes hacer, si es que tienes las columnas de associasion.
Por ejemplo puedes usar applymap,mira el video de abajo
Watch "ApplyMap Function in Qlikview" on YouTube
Tambien puedes usar concanate y crear una mesa vertual (resident load)
Tabla1:
Orderid,
Ventas,
Impuestos
Concanate
Tabla2:
Ordenid
Producto
Mesavertual:
Load
Ordenide,
Ventas * impuestos as 'total',
Producto
Resident nombredemesa group by
Tambien cuando haces algun tipo de agregacion tienes que usar group by
Esto es una ide que puedes usar te recomiendo mirar in you tube, resident load, concanate, y como usar group by in qlikview.
Suerte
Hola Nacianceno,
Usa la idea de Noe de crear una tabla de mapeo:
MAP_VBRK:
MAPPING LOAD VBRK_Moneda as [MAP_VBRK Moneda],
VBRK_TipoDeCambio as [VBRK TipoDeCambio]
FROM [LIB://PRD QVD/VBRK.qvd](qvd);
, en la que almacenes el tipo de cambio de todas las monedas; y luego en tu tabla de hechos KONV usa un ApplyMap() para traerte el tipo de cambio de la moneda de cada registro:
[KONV]:
LOAD "KONV_Valor Condicion" as KONV_ValorCondicion,
if(Match("VBRK_Moneda", 'USD','EUR') > 0,
"KONV_Valor Condicion" * ApplyMap('MAP_VBRK', "VBRK_Moneda", 0),
"KONV_Valor Condicion" * 1) AS P_ValorCondicion_ValorPesosMexicanos
FROM [LIB://PRD QVD/KONV.qvd](qvd);
Varias cosas:
- Con el tipo de cambio no suele bastar con el código de la moneda, sino que además tienes que tener en cuenta una fecha, así que en la tabla de mapeo (MAP_VBRK) tendrías que tener un campo clave compuesto de la fecha y el código de la moneda.
- Ojo con el valor ELSE de la función ApplyMap() (su tercer parámetro), ya que si no pones ningún valor por defecto y no encuentra correspondencia para el segundo parámetro te devuelve el segundo parámetro.
No sé si me he explicado... Para resumir, y como Noe te sugiere, échale un vistazo a la funcionalidad que ofrecen las tablas de mapeo y la función ApplyMap() porque su uso es muy generalizado y simplifica mucho la vida del desarrollador.
Espero que te ayude.
Saludos,
H