Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Distribuir datos por vendedor

Hola a todos, y gracias de antemano por que me ayudáis bastante en progresar en esta magnifica utilidad.

En esta ocasión estoy pensando en distribuir los datos por cada vendedor para que puedan ver y estudiar sus propios numeros. Y para ello me gustaría que, partiendo de una misma hoja de excel  con todos los datos de todos, enviarle un fichero qvf a cada uno solo con los datos de cada uno sin que tengan acceso a todos los demás. Busco que esto sea de una manera lo más automática posible.

¿Como lo veis?, ¿es posible?

Gracias.

1 Solution

Accepted Solutions
isorinrusu
Partner - Creator III
Partner - Creator III

Hola José Juan.

Te explico cómo es una de las soluciones.

Vas a tener 2 qvf. Uno va a ser tuyo como generador y no lo vas a compartir. Lo vas a usar para cargar los datos y generar N qvds diferentes, dependiendo del número de usuario - un qvd por usuario. El otro va a ser la aplicación final, que vas a enviar a los N usuarios. Esto quiere decir que el extractor no va a tener gráficos. La aplicación final es la que lo tiene.

Te adjunto unos datos de ejemplo. Son:

  • 2 QVF, que se corresponden al extractor/generador y a la aplicación final
  • 2 Excel, uno de Sales y otro de Orders

El script en el QVF Extractor está comentado, indicándote para qué se hace cada cosa. El objetivo final es conseguir un QVD de Sales y un QVD de Orders por cada vendedor (que está únicamente en la tabla de Sales). Hay un total de 4 vendedores en el Excel de ejemplo, por lo que se generan 8 QVDs (1 Orders y 1 Sales * 4). Si pones a mano más vendedores, te generará más QVDs - es dinámico.

Échale un vistazo, y cualquier duda me comentas.

Un saludo!

View solution in original post

12 Replies
ger_alegria
Partner - Creator
Partner - Creator

Es posible, puedes dar una revisada a la función Section Application.

Esta función te va a permitir limitar los datos que puede ver cada uno de los usuarios dependiendo de su rol, región o cualquier otra dimensión.

Saludos.

isorinrusu
Partner - Creator III
Partner - Creator III

Hola Jose Juan,

El Section Access no te va a servir porque Qlik Sense Desktop no lo incluye - no funciona (a diferencia de QlikView Desktop). Si lo tuvieras en un servidor, y cada uno de los usuarios tuviese una licencia, sí podrías usarlo.

Creo que una solución mejor es repartir .QVDs en vez de QVFs. Muchos QVDs, un solo QVF para todos. El usuario solamente tendría que recargar la aplicación después de que tú le pasases los datos.

Esto lo haría de la siguiente manera: con un bucle for each (con el FieldValueList sobre el campo de vendedor), cargar los datos pertenecientes solamente a ese vendedor (con un Where en el Load), y exportar el resultado a qvds diferentes, usando la misma variable de Vendedor para que te cree muchos, y no te machaque los anteriores.

Si quieres un ejemplo de verdad dímelo.

Un saludo,

Sorin.

Anonymous
Not applicable
Author

Gracias a los dos por el input.

La verdad es que me suena a chino lo que me decis. ¿Teneis informacion donde estudiarme eso de los QVDs? como se hacen y ¿como conectarlo en el Load?


Gracias.

ger_alegria
Partner - Creator
Partner - Creator

Todo lo puedes encontrar en la ayuda de Qlik, te dejo una liga:

https://help.qlik.com/en-US/sense/3.2/Subsystems/Hub/Content/Scripting/work-with-QVD-files.htm

gabriel_as
Contributor III
Contributor III

Te recomiendo manejarlo de la siguiente manera:

1.- Dar nombre a la tabla que se crea en memoria (en este caso es "PrecioL2")

PrecioL2:

LOAD

  Codigo,

  PrecioVentaL2,

  Descripcion

;

SELECT  .....

2-lo guardas en un archivo QVD

store PrecioL2 into BDprecios.qvd

3.- Recuperas los datos desde el archivo QVD

PrecioAntL2:

LOAD

  Codigo,

  PrecioVentaL2 as precioAnt

FROM

[BDprecios.qvd]

(qvd);

En este ejemplo el archivo QVD se guardará en el mismo subdirectorio donde radica tu archivo QVW pero puedes indicar la ruta completa tanto al guardar como al recuperar, Ej:

guardar

store PrecioL2 into C:\SIVIDI\BDprecios.qvd


recuperar

FROM

[C:\SIVIDI\BDprecios.qvd]

(qvd);

Si te sirve la marcas como respuesta para los que vienen atrás.

Saludos

Anonymous
Not applicable
Author

Hola Sorin

Si puedes echarme una mano te lo agradecería, esto se me escapa.

Saludos.

Anonymous
Not applicable
Author

Buen día

Que tal José Juan, te comento que estoy haciendo algo parecido para una cooperativa de ahorros, la idea es que cada sucursal pueda ver la información perteneciente a cada una, lo que hago es tener un qvd en general con toda la información, y para cada sucursal es la misma app pero a diferencia de cada una tiene un where = Sucursal, con esto al recargar cada una tendría información solo perteneciente a la sucursal o agencia.

Where Sucursal = 'Quito Norte'; 

hector_munoz
Specialist
Specialist

Hola,

La solución de José Antonio es muy buena y sencilla. Le añadiría solo lo siguiente para facilitar el mantenimiento de las mismas:

  • Me imagino que cada una de las aplicaciones (ficheros QVW) tendrá un sufijo o un prefijo en su nombre que identifica a cada una de las sucursales. Algo así como MyApp_Sucursal01.qvw, MyApp_Sucursal02.qvw, ..., MyApp_Sucursal99.qvw, etc.
  • Con la función DocumentName() puedes, en el script, recuperar el nombre de la aplicación y con la función SubField() recuperar alguno de los tokens que conforman el nombre del fichero QVW. De esta forma, con "SubField(SubField(DocumentName(), '.', 1), '_', -1)" obtendrías "01", "02", ..., "99", etc. en el caso anterior.
  • Si el resultado de esta función lo pones en el WHERE como indica José Antonio: WHERE Sucursal = SubField(SubField(DocumentName(), '.', 1), '_', -1) no tendrías que "tocar" cada una de las aplicaciones que vayas creando puesto que cada una sabría qué información coger.

La solución de Sorín es igual de buena y le añadiría algo parecido: cada aplicación va a coger "su" QVD ya que cada QVD tendría un sufijo o prefijo de la sucursal que contiene.

¡Espero que te sirva!

Saludos,

H

Anonymous
Not applicable
Author

Hola a todos.

Antes de todo muchas gracias por vuestro aporte de soluciones, pero yo soy bastante novato en esto y, aunque me estoy leyendo las ayudas, todavía se me queda un poco alto de nivel y no se como afrontarlo.

Para que sea algo más interactivo os paso un ejemplo de qvd sencillo y por favor modificad lo que veáis oportuno y de esa forma puedo avanzar sin dar palos de ciego, que esto me supera.

La idea es, como creo entender, es generar tantos qvd como vendedores me salen de los dos filtros que tengo. Son los mismos vendedores pero no he querido linkar a un solo filtro, por la estructura de la verdadera base de datos.

Muchas gracias a todos por la ayuda.