Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
LnAz
Contributor III
Contributor III

avec quel fonction on peut remplacer le cross Apply de sql

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

2 Solutions

Accepted Solutions
vinieme12
Champion III
Champion III

Use IntervalMatch()  ; As below

 

https://help.qlik.com/en-US/qlikview/May2023/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptP...

 

 

vinieme12_0-1703646183675.png

 

 

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;

 

 

Vineeth Pujari
If a post helps to resolve your issue, please accept it as a Solution.

View solution in original post

brunobertels
Master
Master

Bonjour 

 

L'erreur 129 est lié à la ressource mémoire 

What is error 129 in qlik?
-129 or -128 are most frequently caused by resource constraints; the system is out of memory.

 

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

View solution in original post

3 Replies
vinieme12
Champion III
Champion III

Use IntervalMatch()  ; As below

 

https://help.qlik.com/en-US/qlikview/May2023/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptP...

 

 

vinieme12_0-1703646183675.png

 

 

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;

 

 

Vineeth Pujari
If a post helps to resolve your issue, please accept it as a Solution.
LnAz
Contributor III
Contributor III
Author

@vinieme12 

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?

LnAz_0-1703676931015.png

 

brunobertels
Master
Master

Bonjour 

 

L'erreur 129 est lié à la ressource mémoire 

What is error 129 in qlik?
-129 or -128 are most frequently caused by resource constraints; the system is out of memory.

 

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