Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

¿Como crear un nuevo campo a partir de dos tablas?

Estimada comunidad,

Tengo el siguiente problema. Estoy cargando dos tablas en mi modelo y a partir de ellas necesito crear un nuevo campo calculado en una de las tablas.

Aquí se los explico a partir de tablas

Productos
Codigo
Nombre
Ajuste

CostoProm
Codigo
Costo

y a partir de del campo Ajuste en la tabla Producto y Costo de la tabla CostoProm, Crear un nuevo campo en la tabla Producto que sea Valorizado = Ajuste * Costo

Producto
Codigo Producto
Nombre Producto
Ajuste
Valorizado = Ajuste * Costo

Este es el código que tengo

//--- Carga de Movimientos de Productos

PRODUCTOS:

LOAD

  CODIGO,

  AJUSTE,

  NOMBRE,

FROM

$(PathQvd)EXIPRODUCTO.qvd

(qvd);

//--- Carga de costo promedio de costos promedios

COSTOPROM:

LOAD

  CODIGO,

  COSTO

FROM

$(PathQvd)COSTOPROM.qvd

(qvd);

Ayuda por favor

20 Replies
Not applicable
Author

Muchas gracias, me funcionó perfecto.

Ahora me queda una sola duda

Que pasa si quiero hacer un Left Join pero en donde más de un campo de las tablas coinciden?

igual funciona???

Producto: Codigo, Mes, Año, Ajuste, Nombre, Sucursal, Usuario

CostoProm: Codigo, Mes, Año, Costo

Not applicable
Author

Finalmente me funcionó, mezcle lo que tu me enseñaste con lo que me enseñó Enrique.

y este fue el script resultante, pero antes quisiera preguntarte algo más que le planteé a Enrique y te pregunto a ti por si es que sabes también.

Que pasa si quiero hacer un Left Join pero en donde más de un campo de las tablas coinciden?

igual funciona???

Por ejemplo con tres campos iguales?:

Producto: Codigo, Mes, Año, Ajuste

CostoProm: Codigo, Mes, Año, Costo

??????

bueno, este es el script que ocupé finalmente

PRODUCTOS:

LOAD

     CODIGO,

     CORRELATIVO,

     USUARIO,

     FECHA,

     CANTIDAD,

     CANTIDADOLD,

     AJUSTE,

     MOTIVO1,

     COSTOLD,

     NOMBRE_SUCURSAL,

     NOMBRE,

     VALOR_COMPRA,

     AÑO,

     MES,

     SEMANA,

     DIAS,

     DIA,

     TRIMESTRE,

     SEMESTRE,

     OBSERVACION,

     SECTOR,

     CODSUCURSAL

FROM

$(PathQvd)EXIPRODUCTO.qvd  (qvd);

LEFT JOIN (PRODUCTOS)

COSTOPROM:

LOAD

    CODIGO,

    COSTO

FROM

$(PathQvd)COSTOPROM.qvd (qvd);

PROD_FINAL:

LOAD  *,  (AJUSTE * COSTO) as VALORIZADO

Resident PRODUCTOS;

DROP TABLE PRODUCTOS;

Not applicable
Author

Hola,

Que bien que te funciono, y sobre tu pregunta cuando 3 campos deben hacer macth te recomendaria crear una llave compuesta algo así como: Codigo & '|' & Mes & '|' & Año as %Costo eso en ambas tablas para que el Left Join se haga por medio del campo %Costo que es la llave compuesta que creamos en ambas tablas.

Saludos.

Not applicable
Author

Genial! gracias Osvaldo por tu buena voluntad para ayudar.

Oye y precisamente en que parte es conveniente hacer eso?

En el QVD supongo?
y algo más, en que parte se coloca la sentencia?

en LOAD? entre la llamada a los demás campos?

Por ejemplo:

PRODUCTOS:

LOAD

     CODIGO,

     AÑO,

     MES,    

     FECHA,

     CORRELATIVO,

     USUARIO,    

     CANTIDAD,

     CANTIDADOLD,

     AJUSTE,

     CODIGO & '|' & MES & '|' & AÑO  as %Costo


FROM

$(PathQvd)EXIPRODUCTO.qvd  (qvd);

así?

Not applicable
Author

Hola David,

Se coloca en el Script y en el Load de cada tabla, como es una llave se recomienda poner al inicio y se comentan los campos CODIGO, MES y AÑO para evitar llaves sinteticas:

PRODUCTOS:

LOAD

     CODIGO & '|' & MES & '|' & AÑO  as %Costo,

//     CODIGO,

     CORRELATIVO,

     USUARIO,

     FECHA,

     CANTIDAD,

     CANTIDADOLD,

     AJUSTE,

     MOTIVO1,

     COSTOLD,

     NOMBRE_SUCURSAL,

     NOMBRE,

     VALOR_COMPRA,

//     AÑO,

//     MES,

     SEMANA,

     DIAS,

     DIA,

     TRIMESTRE,

     SEMESTRE,

     OBSERVACION,

     SECTOR,

     CODSUCURSAL

FROM

$(PathQvd)EXIPRODUCTO.qvd  (qvd);

LEFT JOIN (PRODUCTOS)

COSTOPROM:

LOAD

     CODIGO & '|' & MES & '|' & AÑO  as %Costo,

//    CODIGO,

//     MES,

//     AÑO,

    COSTO

FROM

$(PathQvd)COSTOPROM.qvd (qvd);

PROD_FINAL:

LOAD  *,  (AJUSTE * COSTO) as VALORIZADO

Resident PRODUCTOS;

DROP TABLE PRODUCTOS;

Saludos.

pauljara
Contributor II
Contributor II

Hola Enrique,

Pude leer tu asesoría a David y me agradó tu puntual ayuda.

No se si sea posible me puedas ayudar en un problema en qv.

Saludos,

PJ

ecolomer
Master II
Master II

Hola Paul Jara,

Claro, estaré encantado de poder ayudarte.

Dime en que necesitas ayuda.

Saludos,

Enrique Colomer

pauljara
Contributor II
Contributor II

Hola Enrique, Gracias por contestar

Ten un problema que me gustaría me orientes:

Tengo una tabla pivotante, en la cual en una de esas columnas obtengo totales (calculados) y al final suma el total de ésta columna.

Columna C

50%

30%

10%

5%

5%

----

100%

Lo que necesito es que en mi columna D me aparezca la suma vertical de esta columna

Columna C   Columna D

50%              50%

30%              80%

10%              90%

5%                95%

5%               100%

----

100%

El problema es que necesito presentar esta tabla en un informe en excel mediante Nprinting pero no me permite autosumar la misma columna, entonces por eso necesito hacerlo a travez de QV o de pronto exista otra opción, no se si me puedes ayudar con ese dato.

Saludos cordiales

ecolomer
Master II
Master II

Te preparé un ejemplo con varias alternativas

Full_Accum.png

pauljara
Contributor II
Contributor II

Te lo agradezco mucho Enrique, me sirvió de mucho tu ayuda

Utilicé una opción de QV para auto-sumar columnas.

  • Creé una nueva columna copia de la expresión "%"
  • En inferior del listado de expresiones existe la opción se configurar la acumulación

Sin título.png

Como dije, soy nuevo en esto, y QV me parece un mundo completamente nuevo pero muy interesante.

Agradezco mucho por tu pronta ayuda y disculpas por la molestia.

Saludos,

PJ.