Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour ,
Je charge 3 tables de ventes différentes , ce qui diffère c'est uniquement l'année ( Une table de vente pour l'année 2016, une table de ventes 2017 et une autre table de ventes 2018).
J'ai donc crée 3 variables qui récupère les années 2016,2017 et 2018 et j'applique ces variables dans mon script de la façon suivantes :
//Récupère l'année en cours, ex : 2018
LET vCurrentYear=year(today()-1);
//Récupère l'année précédente, ex : 2017
LET vPastYear=year(addyears(today()-1,-1));
//Récupère l'année précédente - 2 ,ex: 2016
LET vPastYear2=year(addyears(today()-2,-2));
Puis j'applique ces variables dans le script de la façon suivante :
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_VENTES_MAGASINS_HEBDO_$(vCurrentYear).QVD](qvd)
CONCATENATE
LOAD
*
FROM [lib://QVD_DEV//F_VENTES_MAGASINS_HEBDO_$(vPastYear).QVD](qvd)
CONCATENATE
LOAD
*
FROM [lib://QVD_DEV//F_VENTES_MAGASINS_HEBDO_$(vPastYear2).QVD](qvd)
Je souhaiterai savoir si il était possible de créer une boucle avec un "IF" qui va rechercher les QVD ventes de l'année 2016,2017 et 2018 ?
Merci d'avance
Bonjour,
Tu peux simplement faire :
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_VENTES_MAGASINS_HEBDO_*.QVD](qvd)
where subfield(filebasename(),'_',-1)>=year(today()-2);
// Si tu as des fichiers plus anciens, ne charge que l'année en cours et les 2 précédentes
Ok du coup plus besoin d'utiliser les contenate entre les QVD ?
Et si par exemple, à ma table "TMP_FAIT_WEB" je souhaite ajouter des stocks que je charge de la même façon c'est à dire en prenant les stocks des 3 dernières années, je devrais écris un script dans ce genre :
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_VENTES_MAGASINS_HEBDO_*.QVD](qvd)
where subfield(filebasename(),'_',-1)>=year(today()-2);
CONCATENATE
LOAD
*
FROM [lib://QVD_DEV//F_STOCKS_HEBDO_*.QVD](qvd)
where subfield(filebasename(),'_',-1)>=year(today()-2);
On peut mettre plusieurs étoiles
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_*_HEBDO_*.QVD](qvd)
where subfield(filebasename(),'_',-1)>=year(today()-2);
J'ai essayé votre méthode mais il reprends les données à partir de 2013 alors que je voudrais celle à partir de 2016
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_*_HEBDO_*.QVD](qvd)
where subfield(filebasename(),'_',-1)>=year(today()-2);
Ce que je souhaiterai savoir c'est comment dire à Qlik de prendre uniquement les fichier qui sont compris entre l'année -2 et l'année courante ?
Car effectivement là, le script va charger toutes les données de 2013 jusqu'a 2016 or que je souhaite uniquement les 3 dernières années (2016,2017,2018)
Le script ouvre le QVD mais ne charge pas de données
Pour faire un truc propre :
Let vStart = year(Today())-2;
Let vEnd= year(Today());
for vYear = vStart to vEnd
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_DEV//F_STOCKS_HEBDO_'$(vYear).QVD](qvd);
Next;
C'est top ça marche
Cependant si je souhaite concatener les données j'ai l'erreur suivante :
Let vStart = year(Today())-2;
Let vEnd= year(Today());
for vYear = vStart to vEnd
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_Prod/F_ODS_STOCKS_MAGASIN_HEBDO_$(vYear).QVD](qvd)
WHERE MAGASIN_CODE = 5;
CONCATENATE
TMP_FAIT_WEB:
LOAD
*
FROM [lib://QVD_Prod/F_ODS_STOCKS_DEPOTS_HEBDO_$(vYear).QVD](qvd);
WHERE CODE_DEPOT = 9
Next;
Ce que je voudrais savoir, c'est si je souhaite utiliser cette variable dans une autre table de chargement et que je souhaite concaténer les tables entre-elles, comme ça fonctionne ? (Désolé pour toutes ces questions mais je débute au niveau script un peu plus poussé sous QS)
Je ne sais pas pourquoi tu as cette erreur, mais tonc script devrait être :
Let vStart = year(Today())-2;
Let vEnd= year(Today());
for vYear = vStart to vEnd
let vStep = NoOfRows('TEMP');
IF isnull(vStep) = -1 THEN
TMP_FAIT_WEB:
ELSE
CONCATENATE(TMP_FAIT_WEB)
END IF
LOAD
*
FROM [lib://QVD_Prod/F_ODS_STOCKS_MAGASIN_HEBDO_$(vYear).QVD](qvd)
WHERE MAGASIN_CODE = 5;
CONCATENATE(TMP_FAIT_WEB)
LOAD
*
FROM [lib://QVD_Prod/F_ODS_STOCKS_DEPOTS_HEBDO_$(vYear).QVD](qvd);
WHERE CODE_DEPOT = 9
Next;
J'ai essayé la solution que vous avez apporté.
Cependant lorsque j'insère le "ELSE" dans le code , QLIK SENSE n'est pas d'accord :