Fusion de sources de données concaténées

Dans cette section :

Comment :

Vous pouvez utiliser la phrase MORE dans une requête MATCH pour fusionner jusqu'à 16 ensembles de sources de données concaténées.

Il faut remplir toutes les conditions dans la requête principale. Toutes les sources de données à fusionner doivent être triées par au moins un champ avec un format commun.

La requête MATCH a pour résultat un fichier HOLD contenant toutes les données fusionnées. Vous pouvez spécifier comment chaque fichier successif est fusionné en utilisant une commande AFTER MATCH. Par exemple, vous pouvez conserver :


Haut de page

x
Syntaxe : Fusionner des sources de données concaténées
1. MATCH FILE file1main request 
   MORE 
2. FILE file2subrequest 
   MORE 
3. FILE file3subrequest 
   RUN 
4. FILE file4main request 
5. [AFTER MATCH merge_phrase] 
   MORE 
6. FILE file5subrequest 
   MORE 
7. FILE file6subrequest 
   RUN 
8. FILE file7main request 
9. [AFTER MATCH merge_phrase]
   MORE 
10.FILE file8subrequest 
   MORE 
11.FILE file9subrequest 
   END
  1. Commence le premier jeu de réponses dans la requête MATCH. file1 est la première source de données dans le premier jeu de réponses.
  2. Concatène file2 à file1 dans le premier jeu de réponses MATCH.
  3. Concatène file3 à file1 et file2 dans le premier jeu de réponses MATCH.
  4. Commence le deuxième jeu de réponses dans la requête MATCH. File4 est la première source de données dans le deuxième jeu de réponses.
  5. Toutes les données concaténées dans le premier jeu de réponses sont fusionnées avec les données concaténées dans le deuxième jeu de réponses avec AFTER MATCH phrase_fusion dans le deuxième jeu de réponses.
  6. Concatène file5 à file4 dans le deuxième jeu de réponses MATCH.
  7. Concatène file6 à file4 et file5 dans le deuxième jeu de réponses MATCH.
  8. Commence le troisième jeu de réponses dans la requête MATCH. file7 est la première source de données dans le troisième jeu de réponses.
  9. Toutes les données fusionnées des premier et deuxième jeux de réponses, ce qui est maintenant un fichier HOLD, sont fusionnées avec les données concaténées dans le troisième jeu de réponses avec AFTER MATCH phrase_fusion dans le troisième jeu de réponses. Le dernier ensemble de données fusionnées est stocké dans le fichier HOLD.
  10. Concatène file8 à file7 dans le troisième jeu de réponses.
  11. Concatène file9 à file7 et file8 dans le troisième jeu de réponses MATCH.

Haut de page

x
Utilisation de critères de tri dans les requêtes MATCH

Si les sources de données dans la requête MATCH partagent des critères de tri de haut niveau communs avec les mêmes noms et formats, le processus MATCH fusionne les enregistrements avec des valeurs de critère de tri correspondantes de chacun des fichiers. Si les deux sources de données dans la requête MATCH ont le même critère de tri avec différents noms, vous pouvez utiliser la phrase AS pour changer un des noms.

Si les fichiers dans la requête MATCH ne partagent pas de critère de tri de haut niveau, les champs ne se sont pas comparés. Au lieu de cela, les champs du premier enregistrement dans chaque source de données sont fusionnés pour créer le premier enregistrement du fichier HOLD, et ainsi de suite pour les enregistrements restants.



Exemple : Fusion de sources de données concaténées avec des critère de tri d'ordre supérieur communs

L'exemple de procédure stockée annotée suivant illustre MATCH et MORE, en utilisant un critère de tri commun :

1. DEFINE FILE EMPDATA
   CURR_SAL/D12.2M = CSAL;
   FIRST_NAME/A10 = FN;
   EID/A9 = PIN;
   END
 
   -*Start MATCH.
  
2. MATCH FILE EMPLOYEE
      SUM CURR_SAL AS 'CURRENT'
          FIRST_NAME AS 'FIRST'
      BY EID AS 'SSN'
   -*Concatenate file EMPDATA to EMPLOYEE to form first MATCH answer set. 
3.    MORE
      FILE EMPDATA
      RUN
   -*Second MATCH answer set:
  
4. FILE TRAINING
      PRINT EXPENSES 
5.    BY PIN AS 'SSN' 
6.    AFTER MATCH HOLD OLD-OR-NEW
   END
 
   -*Print merged file:
  
7. TABLE FILE HOLD
      PRINT *
   END
  1. Définit les champs du fichier EMPDATA nécessaires pour concaténer le critère de tri commun au fichier EMPLOYEE.
  2. Commence la requête MATCH et la requête principale dans la concaténation. La requête principale définit l'impression et le tri des fichiers concaténés. Le critère de tri s'appelle SSN dans le fichier résultant.
  3. Concatène le fichier EMPDATA au fichier EMPLOYEE. Ce fichier concaténé devient le fichier OLD dans la requête MATCH.
  4. Crée un fichier NEW dans la requête MATCH.
  5. Utilise une phrase AS pour changer le nom du critère de tri dans le fichier NEW au même nom que celui du critère de tri dans le fichier OLD.
  6. Définit la procédure de fusion. Tous les enregistrements du fichier NEW, le fichier OLD et les deux fichiers, sont compris dans le fichier HOLD final.
  7. Imprime les valeurs du fichier fusionné.

La première page de sortie est :

SSN                CURRENT  FIRST        EXPENSES
---                -------  -----        --------
000000010       $55,500.00  DANIEL       2,300.00
000000020       $62,500.00  MICHAEL             .
000000030       $70,000.00  LOIS         2,600.00
000000030       $70,000.00  LOIS         2,300.00
000000040       $62,500.00  RUTH         3,400.00
000000050       $54,100.00  PETER        3,300.00
000000060       $55,500.00  DORINA              .
000000070       $83,000.00  EVELYN              .
000000080       $43,400.00  PAMELA       3,200.00
000000080       $43,400.00  PAMELA       3,350.00
000000090       $33,000.00  MARIANNE            .
000000100       $32,400.00  TIM          3,100.00
000000110       $19,300.00  ANTHONY      1,800.00
000000110       $19,300.00  ANTHONY      2,500.00
000000110       $19,300.00  ANTHONY      2,400.00
000000120       $49,500.00  KATE         2,200.00
000000130       $62,500.00  MARCUS              .


Exemple : Fusion de sources de données concaténées sans critère de tri commun

Dans cet exemple, les sources de données fusionnées ne partagent pas de critère de tri :

DEFINE FILE EMPDATA
CURR_SAL/D12.2M = CSAL;
FIRST_NAME/A10 = FN;
EID/A9 = PIN;
END
 
-*Start MATCH
 
MATCH FILE EMPLOYEE
SUM CURR_SAL AS 'CURRENT'
    FIRST_NAME AS 'FIRST'
BY EID AS 'SSN'
 
-*Concatenate EMPDATA to EMPLOYEE to form the first MATCH answer set
 
MORE
FILE EMPDATA
RUN 
 
-*Second MATCH answer set:
 
FILE TRAINING
PRINT EXPENSES
BY PIN AS 'EID'
AFTER MATCH HOLD OLD-OR-NEW
END
 
-*Print merged file:
 
TABLE FILE HOLD
PRINT *
END

La phrase AS modifie le jeu de réponses. Comme les critères de tri n'ont plus les mêmes noms, les champs sont fusionnés sans tenir compte des enregistrements correspondants.

La première page de sortie est :

SSN                CURRENT  FIRST       EID         EXPENSES
---                -------  -----       ---         --------
000000010       $55,500.00  DANIEL      000000010   2,300.00
000000020       $62,500.00  MICHAEL     000000030   2,600.00
000000030       $70,000.00  LOIS        000000030   2,300.00
000000040       $62,500.00  RUTH        000000040   3,400.00
000000050       $54,100.00  PETER       000000050   3,300.00
000000060       $55,500.00  DORINA      000000080   3,200.00
000000070       $83,000.00  EVELYN      000000080   3,350.00
000000080       $43,400.00  PAMELA      000000100   3,100.00
000000090       $33,000.00  MARIANNE    000000110   1,800.00
000000100       $32,400.00  TIM         000000110   2,500.00
000000110       $19,300.00  ANTHONY     000000110   2,400.00
000000120       $49,500.00  KATE        000000120   2,200.00
000000130       $62,500.00  MARCUS      000000140   3,600.00
000000140       $62,500.00  VERONICA    000000150   3,400.00
000000150       $40,900.00  KARL        000000160   1,000.00
000000160       $62,500.00  ROSE        000000180   1,250.00
000000170       $30,800.00  WILLIAM     000000190   3,150.00

WebFOCUS