OVH Cloud OVH Cloud

HyperFile et les Fusions...

5 réponses
Avatar
Romuald.besset
Y-a-t il une solution (vues, et que sais-je) qui permetrait de fusionner
un fichier avec des rubriques de deux autres fichier ? Pour obtenir au
final une source de donnée 'complétée en largeur' selon le schéma suivant :
A est un fichier de départ
B est un fichier lié
C est le fichier de départ 'complété'

A(clé,rA1,rA2) + B(clé,rB1) => C(clé,rA1,rA2,rB1) pour toutes les lignes
de A et B sur clé

Attention, cela doit supporter d'important volumes et évidement être rapide.
Merci de détailler un peu svp
++ R&B

5 réponses

Avatar
Pierre BOUSQUET
une requete avec jointure entre A et B
non???


"Romuald.besset" a écrit dans le message de
news:camdl0$5sa$
Y-a-t il une solution (vues, et que sais-je) qui permetrait de fusionner
un fichier avec des rubriques de deux autres fichier ? Pour obtenir au
final une source de donnée 'complétée en largeur' selon le schéma suivant


:
A est un fichier de départ
B est un fichier lié
C est le fichier de départ 'complété'

A(clé,rA1,rA2) + B(clé,rB1) => C(clé,rA1,rA2,rB1) pour toutes les lignes
de A et B sur clé

Attention, cela doit supporter d'important volumes et évidement être


rapide.
Merci de détailler un peu svp
++ R&B


Avatar
Giovanni C.
FICHIER_EXPORT est une Source de Données // Le fichier C
FichierDesc est une description de fichier
RubriqueDesc est une description de rubrique

lTempRubrique est une chaîne
lListeRubrique est une chaîne

nIndice est un entier = 1


// description du fichier "FICHIER_EXPORT"
FichierDesc..Nom = "FICHIER"
FichierDesc..Type = hFichierNormal


HDéclareExterne("Chemin+Fichier.FIC","FICHIER_EXPORT") // Declaration du
fichier export dans l'analyse

nIndice=1
lListeRubrique = HListeRubrique(FICHIER_REQUETE) // La jointure sur A et
B
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)

TANTQUE lTempRubrique<>"" ET lTempRubrique<>EOT
RubriqueDesc..Nom={"FICHIER_REQUETE."+lTempRubrique}..Nom
RubriqueDesc..Type={"FICHIER_REQUETE."+lTempRubrique}..Type
RubriqueDesc..Taille={"FICHIER_REQUETE."+lTempRubrique}..Taille
HDecritRubrique(FicherDesc,RubriqueDesc)

// Lecture de la rubrique suivante
nIndice++
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)
FIN

HDecritFichier(FichierDesc)
HCreation(FICHIER_EXPORT)


// Traitement sur fichier export
tant que pas en dehors(fichier requete)
HCopieEnregistrement
hlitsuivant(fichier requete)
fin

HAnnuleDeclaration("FICHIER_EXPORT")


Fait rapidement, a essayer (notamment sur les indirections). Cela te permet
de creer ton resultat dans un fichier, pour un eventuel export :)

--
-= Giovanni =-

"Romuald.besset" a écrit dans le message de
news:camdl0$5sa$
Y-a-t il une solution (vues, et que sais-je) qui permetrait de fusionner
un fichier avec des rubriques de deux autres fichier ? Pour obtenir au
final une source de donnée 'complétée en largeur' selon le schéma suivant


:
A est un fichier de départ
B est un fichier lié
C est le fichier de départ 'complété'

A(clé,rA1,rA2) + B(clé,rB1) => C(clé,rA1,rA2,rB1) pour toutes les lignes
de A et B sur clé

Attention, cela doit supporter d'important volumes et évidement être


rapide.
Merci de détailler un peu svp
++ R&B


Avatar
Romuald.besset
Giovanni C. wrote:
FICHIER_EXPORT est une Source de Données // Le fichier C
FichierDesc est une description de fichier
RubriqueDesc est une description de rubrique

lTempRubrique est une chaîne
lListeRubrique est une chaîne

nIndice est un entier = 1


// description du fichier "FICHIER_EXPORT"
FichierDesc..Nom = "FICHIER"
FichierDesc..Type = hFichierNormal


HDéclareExterne("Chemin+Fichier.FIC","FICHIER_EXPORT") // Declaration du
fichier export dans l'analyse

nIndice=1
lListeRubrique = HListeRubrique(FICHIER_REQUETE) // La jointure sur A et
B
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)

TANTQUE lTempRubrique<>"" ET lTempRubrique<>EOT
RubriqueDesc..Nom={"FICHIER_REQUETE."+lTempRubrique}..Nom
RubriqueDesc..Type={"FICHIER_REQUETE."+lTempRubrique}..Type
RubriqueDesc..Taille={"FICHIER_REQUETE."+lTempRubrique}..Taille
HDecritRubrique(FicherDesc,RubriqueDesc)

// Lecture de la rubrique suivante
nIndice++
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)
FIN

HDecritFichier(FichierDesc)
HCreation(FICHIER_EXPORT)


// Traitement sur fichier export
tant que pas en dehors(fichier requete)
HCopieEnregistrement
hlitsuivant(fichier requete)
fin

HAnnuleDeclaration("FICHIER_EXPORT")


Fait rapidement, a essayer (notamment sur les indirections). Cela te permet
de creer ton resultat dans un fichier, pour un eventuel export :)






Merci Giovanni C.
c'est précisément de que je faisait... et c'est un problème : plus il y
a de données, plus c'est lent à préparer ! mais la croissance de
l'attente est exponentielle.

maiq quand on sait que A est déja un fichier de ce genre...., qu'en
fait de B, il y a deux fichier et que C va dans un Etat... cela fait
quelques 4 parcours de toutes ma sélection pour imprimer...

Détails à l'adresse suivante
http://rbesset.net/modules/newbb/viewtopic.php?topic_id35&forum=5

++ R&B
Avatar
Giovanni C.
As tu essayer de creer une vue a la place de ton fichier temporaire ou bien
de creer un ID Auto sur ledit fichier ( pour baser le parcours du fichier
sur cette clé, et non les autres ),
puis de creer le fichier final ?

Autre question, quels sont les temps d'attente par rapport au nb
d'enregistrements ?

-= Giovanni =-

"Romuald.besset" a écrit dans le message de
news:caru4o$hcg$
Giovanni C. wrote:
> FICHIER_EXPORT est une Source de Données // Le fichier C
> FichierDesc est une description de fichier
> RubriqueDesc est une description de rubrique
>
> lTempRubrique est une chaîne
> lListeRubrique est une chaîne
>
> nIndice est un entier = 1
>
>
> // description du fichier "FICHIER_EXPORT"
> FichierDesc..Nom = "FICHIER"
> FichierDesc..Type = hFichierNormal
>
>
> HDéclareExterne("Chemin+Fichier.FIC","FICHIER_EXPORT") // Declaration du
> fichier export dans l'analyse



// Cle unique sur fichier

------------------------------

RubriqueDesc..Nom="CleUNIQUE"
RubriqueDesc..Type=hRubIdAuto
RubriqueDesc..TypeCle=hCleUnique
HDecritRubrique(FicherDesc,RubriqueDesc)

-----------------

>
> nIndice=1
> lListeRubrique = HListeRubrique(FICHIER_REQUETE) // La jointure sur A


et
> B
> lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)
>
> TANTQUE lTempRubrique<>"" ET lTempRubrique<>EOT
> RubriqueDesc..Nom={"FICHIER_REQUETE."+lTempRubrique}..Nom
> RubriqueDesc..Type={"FICHIER_REQUETE."+lTempRubrique}..Type
> RubriqueDesc..Taille={"FICHIER_REQUETE."+lTempRubrique}..Taille
> HDecritRubrique(FicherDesc,RubriqueDesc)
>
> // Lecture de la rubrique suivante
> nIndice++
> lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)
> FIN
>
> HDecritFichier(FichierDesc)
> HCreation(FICHIER_EXPORT)
>
>
> // Traitement sur fichier export
> tant que pas en dehors(fichier requete)
> HCopieEnregistrement
> hlitsuivant(fichier requete)
> fin
>
> HAnnuleDeclaration("FICHIER_EXPORT")
>
>
> Fait rapidement, a essayer (notamment sur les indirections). Cela te


permet
> de creer ton resultat dans un fichier, pour un eventuel export :)
>



Merci Giovanni C.
c'est précisément de que je faisait... et c'est un problème : plus il y
a de données, plus c'est lent à préparer ! mais la croissance de
l'attente est exponentielle.

maiq quand on sait que A est déja un fichier de ce genre...., qu'en
fait de B, il y a deux fichier et que C va dans un Etat... cela fait
quelques 4 parcours de toutes ma sélection pour imprimer...

Détails à l'adresse suivante
http://rbesset.net/modules/newbb/viewtopic.php?topic_id35&forum=5

++ R&B


Avatar
Romuald.besset
Giovanni C.

En fait pour l'instant j'ai fait 'remonter' le problème d'une paire de
crans...
A est décrit en dynamique et contient les lignes (idautos) issus d'une
sélection multicritères/multifichiers : une bonne requete sql décrite en
dynamique selon les champs remplis (bornes min max sur une quinzaine de
rubriques de quelques fichiers).

Ayant au préalable sélectionnée les critères de tri pour l'impression,
je connais déja mes besoins relatif au parcours...
je décrit (et alimente) donc A directement en conséquence !
j'y envoie donc les infos qui permetttent de constituer la clé composée
(pour le parcours).

En effet, jusque là je parcourait A et creait un temporaire avec la
soixantaines de clés (!) pour satisfaire à tous les parcours potentiels
de l'état. je gagne dont déja un pacours (sur 4)

Ce premier pas réglé, je vais voir les possibilités annexes pour lier
mes fichiers B et B'... mais je pense dans la foulée à 'remonter' aussi
cette étape selon mes besoins dans l'état (un autre parcours en mois)

on devrait en final avoir un parcours de la requete... et un parcours du
ficher temporaire... dans l'état !

J'utilise au passage himportetexte et un txt pour alimenter le temporaire !

Je conserve évidement les vue et sql de coté en cas de pb dans ce
'raccourcis' (la sélection et cette utilisation ont été développées
séparément, on est donc en traint d'optimiser).

merci encore de ton soutient.
++ R&B

Giovanni C. wrote:
As tu essayer de creer une vue a la place de ton fichier temporaire ou bien
de creer un ID Auto sur ledit fichier ( pour baser le parcours du fichier
sur cette clé, et non les autres ),
puis de creer le fichier final ?

Autre question, quels sont les temps d'attente par rapport au nb
d'enregistrements ?

-= Giovanni =-

"Romuald.besset" a écrit dans le message de
news:caru4o$hcg$

Giovanni C. wrote:

FICHIER_EXPORT est une Source de Données // Le fichier C
FichierDesc est une description de fichier
RubriqueDesc est une description de rubrique

lTempRubrique est une chaîne
lListeRubrique est une chaîne

nIndice est un entier = 1


// description du fichier "FICHIER_EXPORT"
FichierDesc..Nom = "FICHIER"
FichierDesc..Type = hFichierNormal


HDéclareExterne("Chemin+Fichier.FIC","FICHIER_EXPORT") // Declaration du
fichier export dans l'analyse






// Cle unique sur fichier

------------------------------

RubriqueDesc..Nom="CleUNIQUE"
RubriqueDesc..Type=hRubIdAuto
RubriqueDesc..TypeCle=hCleUnique
HDecritRubrique(FicherDesc,RubriqueDesc)

-----------------


nIndice=1
lListeRubrique = HListeRubrique(FICHIER_REQUETE) // La jointure sur A





et

B
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)

TANTQUE lTempRubrique<>"" ET lTempRubrique<>EOT
RubriqueDesc..Nom={"FICHIER_REQUETE."+lTempRubrique}..Nom
RubriqueDesc..Type={"FICHIER_REQUETE."+lTempRubrique}..Type
RubriqueDesc..Taille={"FICHIER_REQUETE."+lTempRubrique}..Taille
HDecritRubrique(FicherDesc,RubriqueDesc)

// Lecture de la rubrique suivante
nIndice++
lTempRubrique = ExtraitChaîne(lListeRubrique,nIndice,RC)
FIN

HDecritFichier(FichierDesc)
HCreation(FICHIER_EXPORT)


// Traitement sur fichier export
tant que pas en dehors(fichier requete)
HCopieEnregistrement
hlitsuivant(fichier requete)
fin

HAnnuleDeclaration("FICHIER_EXPORT")


Fait rapidement, a essayer (notamment sur les indirections). Cela te





permet

de creer ton resultat dans un fichier, pour un eventuel export :)






Merci Giovanni C.
c'est précisément de que je faisait... et c'est un problème : plus il y
a de données, plus c'est lent à préparer ! mais la croissance de
l'attente est exponentielle.

maiq quand on sait que A est déja un fichier de ce genre...., qu'en
fait de B, il y a deux fichier et que C va dans un Etat... cela fait
quelques 4 parcours de toutes ma sélection pour imprimer...

Détails à l'adresse suivante
http://rbesset.net/modules/newbb/viewtopic.php?topic_id35&forum=5

++ R&B