Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

concaténer 2 lignes provenant d'un fichier plat

Bonjour à tous,

J'ai une problématique, je dois réaliser une comparaison de données logistique provenant de plusieurs outils différent.

L'un des outil me met à disposition des fichiers plats (type CSV).

Le problème est que dans le fichier plat, tout est regrouper dans un même colonne, répartit par position.

De plus, l'outil dispatch même les données sur 2 lignes (car il y a trop de données, donc il répartit sur 2 lignes) avec un début commun (n° séquence) sur 7 caractères , suivant de 4 caractères non important, et un n° sur 3 désignant l'entête ou les caractéristiques. (sur la 1ère ligne = 110 => entête , sur la 2ème ligne = 111 => caract)

Je souhaiterais concaténer ces 2 lignes, pour n'en faire qu'une et pouvoir chainer ces infos avec SAP qui lui me ramène bien sur une ligne

Voici un exemple :

   

1- 0000001HL17110013DSA80000480        90LIPCNF0000050000000000F0000003 00000000000000000000000000000000000000000000000000000000000000000026669 20161017201610182018101700000000000000000   00000000000000000000
2 - 0000001HL17111             FR04         300Upload LOGIROSS        L1A 00010 01C12A16   1010            A0000001 L02476865 430BA13
3 - 0000002HL17110013DSA80000480        90LIPCNF0000050000000000F0000003 00000000000000000000000000000000000000000000000000000000000000000026669 20161017201610182018101700000000000000000   00000000000000000000
4 - 0000002HL17111             FR04         300Upload LOGIROSS        L1A 00010 01C12A16   1010            A0000001 L02476860 430BA17
5 - 0000003HL17110013DSA80000480        90LIPCNF0000050000000000F0000003 00000000000000000000000000000000000000000000000000000000000000000026669 20161017201610182018101700000000000000000   00000000000000000000

6 - 0000003HL17111             FR04         300Upload LOGIROSS        L1A 00010 01C12A16  

1010            A0000001 L02476859 430BA25

Dans l'exemple il y a 6 lignes dans le fichier, mais fonctionnellement il n'y en a que 3. (j'ai mis : 1- / 2- / 3-, ... pour repérer les lignes car ça ne rend pas bien)

Si on décompose la 1ère ligne

0000001 (n° séquence) sur 7 caractères

HL (code application) sur 2 caract.

17 (code interface) sur 2 caract

110 (Rubrique) Sur 3 caract

Ensuite, ce sont les données pures (Dépôt, Article, Lot, Client , ...)

J'ai besoin que QlikView concatène les 2 lignes pour n'en faire qu'une.

Avez-vous des pistes pour m'aider svp ?

Si besoin de plus d'information, dîtes le moi j'essayerai d'être plus clair et plus précis.

Merci par avance

Yann

Labels (1)
1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Yann,

Il y a 2 solutions, la 2ème étant plus simple :

SOLUTION 1

  1. On utilise l'assistant Fichier de table (enregistrement fixe) pour découper les lignes en 5 champs : [Séquence], [Code application], [Code interface] et  [Rubrique et Données]
    Community_1170850-2.png
  2. Une fois le code généré, on regroupe les lignes en fonction des champs : [Séquence], [Code application], [Code interface]
  3. On concatène le champ [Rubrique et Données]
  4. On ajoute une seconde couche de LOAD pour découper le champ [Rubrique et Données] pour récupérer tous les champs.

LOAD
Séquence,
[Code application],
[Code interface],
Mid([Rubrique et Données], 1, 3) as [Rubrique entête],
//Mid([Rubrique et Données], 4, 191) as [Données entête],
...
Mid([Rubrique et Données], 195, 3) as [Rubrique caract.],
//Mid([Rubrique et Données], 198, 200) as [Données caract.]
... ;
LOAD
[@1:7]  as Séquence,
[@8:9]  as [Code application],
[@10:11]  as [Code interface],
Concat([@12:n]) as [Rubrique et Données]
FROM
(fix, codepage is 1252, no labels)

Group By [@1:7], [@8:9], [@10:11];

SOLUTION 2

  1. On utilise l'assistant Fichier de table (enregistrement fixe) avec les options correspondant exactement à ton type de fichier
    Community_1170850.png
  2. Les 2 lignes sont alors regroupé dans l'assistant et il ne reste plus qu'à découper tes lignes correctement pour récupérer tout tes champs.

LOAD
[@1:7]  as Séquence,
[@8:9]  as [Code application],
[@10:11]  as [Code interface],
// [@12:14] as Rubrique,
[@15:207]  as [Données entête],
// [@208:214] as Séquence_tmp,
// [@215:216] as [Code application_tmp],
// [@217:218] as [Code interface_tmp],
// [@219:221] as Rubrique_tmp,
[@222:n]  as [Données caract]
FROM

(fix, codepage is 1252, no labels, record is 2 lines
);

View solution in original post

4 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Yann,

Il y a 2 solutions, la 2ème étant plus simple :

SOLUTION 1

  1. On utilise l'assistant Fichier de table (enregistrement fixe) pour découper les lignes en 5 champs : [Séquence], [Code application], [Code interface] et  [Rubrique et Données]
    Community_1170850-2.png
  2. Une fois le code généré, on regroupe les lignes en fonction des champs : [Séquence], [Code application], [Code interface]
  3. On concatène le champ [Rubrique et Données]
  4. On ajoute une seconde couche de LOAD pour découper le champ [Rubrique et Données] pour récupérer tous les champs.

LOAD
Séquence,
[Code application],
[Code interface],
Mid([Rubrique et Données], 1, 3) as [Rubrique entête],
//Mid([Rubrique et Données], 4, 191) as [Données entête],
...
Mid([Rubrique et Données], 195, 3) as [Rubrique caract.],
//Mid([Rubrique et Données], 198, 200) as [Données caract.]
... ;
LOAD
[@1:7]  as Séquence,
[@8:9]  as [Code application],
[@10:11]  as [Code interface],
Concat([@12:n]) as [Rubrique et Données]
FROM
(fix, codepage is 1252, no labels)

Group By [@1:7], [@8:9], [@10:11];

SOLUTION 2

  1. On utilise l'assistant Fichier de table (enregistrement fixe) avec les options correspondant exactement à ton type de fichier
    Community_1170850.png
  2. Les 2 lignes sont alors regroupé dans l'assistant et il ne reste plus qu'à découper tes lignes correctement pour récupérer tout tes champs.

LOAD
[@1:7]  as Séquence,
[@8:9]  as [Code application],
[@10:11]  as [Code interface],
// [@12:14] as Rubrique,
[@15:207]  as [Données entête],
// [@208:214] as Séquence_tmp,
// [@215:216] as [Code application_tmp],
// [@217:218] as [Code interface_tmp],
// [@219:221] as Rubrique_tmp,
[@222:n]  as [Données caract]
FROM

(fix, codepage is 1252, no labels, record is 2 lines
);

vinieme12
Champion III
Champion III

Hi,

Sebastien's solutions will work for you, if you need more assistance; please sample data and desired output in excel.



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

Merci pour votre réponse Sébastien, je vais tester cela et je vous retiens informé du résultat.

Not applicable
Author

Sébastien,

Un grand merci pour votre aide,

J'ai mis en place la solution 1 et cela répond parfaitement à ce que je voulais réaliser.

Merci encore.

A bientôt.

Yann