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: 
ab92
Creator II
Creator II

Rechargement en étoile

Bonjour à tous,

J'aimerai avoir votre avis sur ce points svp :

Le reload en étoile :

Pouvez vous m'expliquer pourquoi il ne fonctionne pas quand je l'applique sur une table ce type de procédure :

Chargement de ma table A

Filtre sur certains critère : where ..

Jointure sur une table B par un left join

J'aimerai réaliser un filtre à partir d'un champ de la table B.

Impossible pour moi de réaliser la condition where si le champs n'est pas directement lié à la table principal.

Je crée donc ce script :

Table C

load *

resident A

where ..;

drop table A;

Pouvez m'expliquer pourquoi cette manipulation ne fonctionne pas svp ?

Excellente journée !

1 Solution

Accepted Solutions
christophebrault
Specialist
Specialist

Bonjour,

Pourquoi ne pas utiliser un right join() à la place du left tout simplement ?

La table A sera filtrée automatiquement pour garder seulement les valeurs qui existent dans B

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin

View solution in original post

6 Replies
lcloatre
Partner - Creator III
Partner - Creator III

Axel,

Je pense que ce serait plus efficace si tu mettais ton script de chargement en copie.

ab92
Creator II
Creator II
Author

Bonjour Laurent,

C vrai que c'est pas évident d'être compris :

Voici mon script :

A:
load
Compte as @Ana,
ecr_libel as Justif_ecr,
V_CODE_ETB  as ETB_1,
ecr_plan  as Plan_Compte
Resident Ecritures
Where ecr_plan='G'
order by ecr_date ASC;
left join (A)
B:
load*
inline [
@Ana , Compte_Ana
48861311 , 48861311
48861511 , 48861511
48862264 , 48862264
48862650 , 48862650
61315100 , 61315100
61516100 , 61516100
62264000 , 62264000
62650000 , 62650000
]
;

C:
load*
resident A
where LEN(TRIM(Compte_SI))<>0;

Drop Fields @Compte_SI,Plan_Compte;
DROP Table A;

lcloatre
Partner - Creator III
Partner - Creator III

Je ne vois pas de colonne Compte-SI dans la table A alors que tu as une restriction sur sa longueur lorsque tu charges la table C.

Tu peux aussi passer par la fonction ApplyMap pour charger le Compte_Ana dans la table A.

ab92
Creator II
Creator II
Author

Excuse moi Laurent j'ai oublié de corrigé compte si = Compte ANA

j'ai oublié de réaliser la correction ...

Que veux tu dire par la fonction applymap jamais utiliser, je veux juste réaliser le

where LEN(TRIM(Compte_SI))<>0;

ab92
Creator II
Creator II
Author

Laurent, je viens de lire ce tuto, qui est bien claire :

Don't join - use Applymap instead

Ce que j'aimerai savoir, c'est : est ce que cette fonction est bien adapté à mon besoin ?

En effet je réalise cela tout simplement comme tu as pu t'en apercevoir pour bloquer les comptes d'un champ.

Attention ce n'est pas tout je dois aussi remonter les noms fournisseurs de ces champs donc bloquer un autre plan, avec les même compte affilié et est ce que la fonction apply map est utile pour ce genre de procédure ?

Je comprends que cela génère plus de calcul et il y a moins de chance d'erreur mais je suis sur à 100% de ma jointure ...

christophebrault
Specialist
Specialist

Bonjour,

Pourquoi ne pas utiliser un right join() à la place du left tout simplement ?

La table A sera filtrée automatiquement pour garder seulement les valeurs qui existent dans B

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin