Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
gsegreda
Contributor III
Contributor III

Presentar registro único utilizando un campo específico

Buen día Comunidad.

Tengo unos registros donde el campo de descripción de productos ha venido cambiando y me presenta los datos dispersos cuando quiero revisar la información en una tabla para evaluar el desempeño de cada uno.

Hay un campo (UPC) que se mantiene igual, he querido utilizar este campo en la tabla de datos, para que me presente una única descripción, puede ser la más reciente e ignore las demás, pero no logro hacer que funcione, por lo general muestra lo mismo.

La idea es poder lograr que solo presente una descripción (SKU) por línea. Por lo general la mejor es la que viene en los datos de fecha más reciente.

Esto es un ejemplo de como lo muestra en una tabla:

Como siempre muchas gracias por la ayuda!!!

6 Replies
rubenmarin

Hola Gustavo, podrías probar con:

FirstSortedValue(SKU, -CampoFechaDatos)

Aunque si en la fecha más reciente un UPC tiene más de 1 valor distinto para SKU develverá nulo.

Quizás lo mejor sería crear este campo en el script usando un mapping:

// Primero se crea el mapping

// Se ordena descendente por fecha porque devuelve la primera coincidencia que encuentre

mapSKU:

Mapping LOAD

      UPC,

      SKU

Resident tabladatos

Order by campoFecha Desc

// Y se usa en la tabla de datos para recuperar un único valor para cada UPC

Datos:

LOAD

       Applymap('mapSKU', UPC, 'No existe en maestro (' & UPC &')') as [Descripción UPC]

gsegreda
Contributor III
Contributor III
Author

Muchas gracias por tu pronta colaboración, Rubén...

Me está generando un error la carga de los datos.

En la imagen te muestro como tengo el proceso de la carga, que en realidad es algo sencillo.

No tengo un campo de fecha por lo que tuve que crear uno a partir de otros campos, y funciona.

Mi duda está en dar el órden correcto a los segmentos para que lea las instrucciones.

Si dejo este órden me da un error el segmento QVD que es donde tengo los datos almacenados.

Muy bien recibidas serán las aclaraciones que reciba...

Gracias!!!

rubenmarin

Hola Gustavo,

Lo de la pestaña Descripciones no debería ir ahí, es solo un ejemplo de como usar la tabla mapSKU, tendrías que añadirla como una línea mas en la tabla de la pestaña QVD:

LOAD

      Applymap('mapSKU', UPC, Null()) as [Descripción UPC]

      makedate(... // el resto del script que tenías

ApplyMap busca un valor en el primer campo de la tabla de mapping y devuelve el  valor del segundo campo (si hay más de un valor igual en el primer campo devuelve el primero que encuentre), usa como parámetros:

- tabla mapping a usar

- valor a buscar

- valor que devuelve si no encuentra el valor buscado, si no se rellena devuelve el mismo valor pasado en el primer parámetro

https://help.qlik.com/es-ES/qlikview/12.1/Subsystems/Client/Content/Scripting/MappingFunctions/Apply...

Por esta razón no puedes añadir la fecha en la tabla de la pestaña 'Map SKU', el primer campo debe ser el valor a buscar, y el 2º el valor que devuelve. (También le faltaba un ; al final, y 'Resident' se usa cuando se lee de una tabla ya cargada, si es de qvd se usa 'From').


Se podría usar "Order by Año desc, Mes desc" pero al leer desde un qvd el 'Order by' no funciona, así que primero hay que cargar una tabla temporal para después poder ordenarla leyendo de una tabla Resident, y ya puestos aprovechamos para crear la fecha:

tmpSKU:

Mapping LOAD

      MakeDate(Año,Mes) as Fecha

      UPC,

      SKU

From qvd

;

mapSKU:

Mapping LOAD

      UPC,

      SKU

Resident auxSKU

Order by Fecha Desc;

//Eliminar tabla temporal

DROP Table tmpSKU;


Saludos.

gsegreda
Contributor III
Contributor III
Author

De nuevo muchas gracias Ruben.

Sigo haciendo algo errado, me dan estos errores, aun haciendo ajustes y probando cosas diferentes.

Sigo sin estar seguro del orden de las Secciones de Script, cuando mejor me funciona es cuando las tengo de la forma siguiente:

Me pasó que al correr

Cambié el nombre de la tabla auxSKU, porque me indica que no la encuentra, pero da igual...


Gracias por la ayuda!!!

rubenmarin

Disculpa, se me paso en la primera tabla la palabra Mapping, que había que quitarla:

tmpSKU:

LOAD

      MakeDate(Año,Mes) as Fecha

      UPC,

      SKU

From qvd

;

mapSKU:

Mapping LOAD

      UPC,

      SKU

Resident tmpSKU

Order by Fecha Desc;

//Eliminar tabla temporal

DROP Table tmpSKU;

gsegreda
Contributor III
Contributor III
Author

Rubén muchas gracias por la ayuda, funcionó de forma excelente!!!

No contesté antes porque me emocioné utilizando los datos ya con solo una solo descripción !!!

Saludos.