Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Variable Date dans requête SQL

Bonjour la communauté

J'ai une variable qui me permet de saisir une date, pour recharger les données.

Je veux utiliser cette variable comme critère de ma clause WHERE dans mon script

J'ai mis un WHERE DATE>=$(V_DATE_EXTRACT);

mais ça ne fonctionne pas, j'ai un message d'erreur qui me redonne ma requête : DATE>=01/01/2015

Si je rentre une date en dur, je dois mettre WHERE DATE>='01/01/2015';

Les quotes seraient manquantes quand j'utilise ma variable.

Quelqu'un(e) aurait une idée/solution ?

Merci

15 Replies
almamy_diaby
Creator
Creator

Je ne comprend pas bien,


- Si on est dans le où:

Nom_Table1:

LOAD

-

-;

sql Select

-

-

From TABLE SOURCE;

Tu ne peux pas faire Where avec l'intruction LOAD.

Tu Seras donc obligé de faire une lecture de la table en resident

Nom_Table:

LOAD

Resident Nom_Table1 where date>= '$(V_DATE_EXTRACT)' ;

Drop TAble Nom_Table1;

Normalement utiliser le Where dans le cas LOAD RESIDENT aura le resultat que vous rechercher sans alterer la qualité de vos données

Anonymous
Not applicable
Author

Mon script aujourd'hui est :

LOAD *;

SQL Select *

FROM matable

WHERE DEBUT>='$(V_DATE_EXTRACT)';

Pas d'erreur, mais de respect de la clause Where non plus.

Je vais partir sur un Where dans le Load, avec un Resident et Drop.

Mais si la solution directement dans la requête SQL existe, j'y gagnerai en temps de chargement.

almamy_diaby
Creator
Creator

En effet si on le fait avec sql directement on gagnera plus de temps mais le problème on ne comprend pas pourquoi ça marche pas. 

Alors essaie la solution  avec load resident  pour apprécier le résultat;

Anonymous
Not applicable
Author

J'ai modifié mon script, en ajoutant un LOAD RESIDENT.

Par contre, j'ai un soucis : je charge une table client, qui a une clause where, puis une table produits

LOAD * where exists (cli_ident);

SQL Select * from produits;

Jusqu'ici tout va bien, j'ai tous les produits du client.

Si je veux utiliser LOAD RESIDENT ensuite, je veux reprendre tous les champs : LOAD * RESIDENT produits WHERE DEBUT>='$(V_DATE_EXTRACT)'; me charge tous mes produits sans ternir compte de mon filtre.

Si je reprends le même script mais en listant les champs, les données sont bien filtrées comme demandé.

Est-ce un fonctionnement normal, doit on obligatoirement indiqué quels champs conserver ?

En l’occurrence, je les veux tous, je ne veux qu'appliquer un filtre sur les données.

A+

almamy_diaby
Creator
Creator

Là je pense que je suis limité sur cette question

Anonymous
Not applicable
Author

Pas grave, tu m'as déjà bien aidé !

Merci beaucoup Almamy.diaby