Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous
j'ai 2 table Tab1 et Tab2 j'ai pas de clé de jointure entre les deux tables. Tab1 J'ai juste le champ DT : c'est la liste des premiers jours de chaque mois de l'année en cours + le premier jour du décembre de l'année passée.
et Tab2 c'est une table avec plusieurs champ
exemple
Tab1:
LOAD
DT
INLINE [
2022-12-01,
2023-01-01,
2023-02-01,
2023-03-01,
2023-04-01,
2023-05-01,
.....
2023-12-01
];
Tab2 : load * inline[ID, T2,T3, nom
P01, 2021-06-15, 2023-05-12, spp
p02, 2023-01-12, 2023-03-05, rpp];
avec la requête SQL suivante :
select ID, T2,T3, nom, T1
from Tab2
Cross Apply Tab1
where T1 between T2 an T3
j'obtiens le résultat suivant :
resultat
load * inline[ID, T2,T3, nom, T1
P01, 2021-06-15, 2023-05-12, spp, 2022-12-01
P01, 2021-06-15, 2023-05-12, spp, 2023-01-01
P01, 2021-06-15, 2023-05-12, spp, 2023-02-01
P01, 2021-06-15, 2023-05-12, spp, 2023-03-01
P01, 2021-06-15, 2023-05-12, spp, 2023-04-01
P01, 2021-06-15, 2023-05-12, spp, 2023-05-01
p02, 2023-01-12, 2023-03-05, rpp, 2023-01-01
p02, 2023-01-12, 2023-03-05, rpp, 2023-02-01
p02, 2023-01-12, 2023-03-05, rpp, 2023-03-01
]
Comment je doit faire pour avoir ce résultat sur QlikSense?
Merci d'avance pour votre aide
Use IntervalMatch() ; As below
Tab1:
LOAD
date#(T1,'YYYY-MM-DD') as T1
INLINE [
T1
2022-12-01
2023-01-01
2023-02-01
2023-03-01
2023-04-01
2023-05-01
2023-06-01
2023-07-01
2023-08-01
2023-09-01
2023-10-01
2023-11-01
2023-12-01
];
Tab2 :
load
ID
,date#(T2,'YYYY-MM-DD') as T2
,date#(T3,'YYYY-MM-DD') as T3
,MonthStart(date#(T2,'YYYY-MM-DD'),0) as t2_a
,MonthStart(date#(T3,'YYYY-MM-DD'),0) as t3_a
,nom
inline [
ID,T2,T3,nom
P01,2021-06-15,2023-05-12,spp
p02,2023-01-12,2023-03-05,rpp
];
Inner Join IntervalMatch ( T1 )
LOAD t2_a, t3_a
Resident Tab2;
Drop table Tab1;
Drop field t2_a, t3_a;
exit Script;
Bonjour
L'erreur 129 est lié à la ressource mémoire
Dans ce cas , j'essayerai de charger les données en les segmentant par mois par exemple puis appliquer intervalmatch
Ou alors tenter de le faire en deux fois pour voir si çà passe coté mémoire.
Bruno
Use IntervalMatch() ; As below
Tab1:
LOAD
date#(T1,'YYYY-MM-DD') as T1
INLINE [
T1
2022-12-01
2023-01-01
2023-02-01
2023-03-01
2023-04-01
2023-05-01
2023-06-01
2023-07-01
2023-08-01
2023-09-01
2023-10-01
2023-11-01
2023-12-01
];
Tab2 :
load
ID
,date#(T2,'YYYY-MM-DD') as T2
,date#(T3,'YYYY-MM-DD') as T3
,MonthStart(date#(T2,'YYYY-MM-DD'),0) as t2_a
,MonthStart(date#(T3,'YYYY-MM-DD'),0) as t3_a
,nom
inline [
ID,T2,T3,nom
P01,2021-06-15,2023-05-12,spp
p02,2023-01-12,2023-03-05,rpp
];
Inner Join IntervalMatch ( T1 )
LOAD t2_a, t3_a
Resident Tab2;
Drop table Tab1;
Drop field t2_a, t3_a;
exit Script;
Merci pour ta réponse,
j'ai testé inner join IntervalMatch avec un top 100 sur ma tab2 ça marche bien.
Mais quand j'applique inner join IntervalMatch() sur tout la Tab2 j'ai eu cette erreur.
Je pense c'est à cause de la volumétrie , comment je puisse la faire autrement?
Bonjour
L'erreur 129 est lié à la ressource mémoire
Dans ce cas , j'essayerai de charger les données en les segmentant par mois par exemple puis appliquer intervalmatch
Ou alors tenter de le faire en deux fois pour voir si çà passe coté mémoire.
Bruno