Différents types de règles pour différents niveaux de parsing - 7.1

Standardization

author
Talend Documentation Team
EnrichVersion
7.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement > Systèmes tiers > Composants Data Quality > Composants de standardisation
Gouvernance de données > Systèmes tiers > Composants Data Quality > Composants de standardisation
Qualité et préparation de données > Systèmes tiers > Composants Data Quality > Composants de standardisation
EnrichPlatform
Studio Talend

Le composant tStandardizeRow utilise des règles simples basées sur la grammaire ANTLR et des règles avancées définies par Talend , non basées sur ANTLR.

Parfois, l'utilisation de règles ANTLR ne répond pas à toutes vos attentes lors de normalisation et de standardisation de données. Par exemple, si vous souhaitez extraire la quantité de liquide dans les enregistrements suivants :
3M PROJECT LAMP 7 LUMENS 32ML
A 5 LUMINES 5 LOW VANILLA 5L 5LIGHT 5 L DULUX L
54MLP FAC 32 ML

Vous devez d'abord définir une unité pour les liquides et une quantité de liquides dans des règles d'analyse simples, comme suit :

Si vous testez ces règles dans la perspective Profiling du Studio, vous pouvez constater que ces règles extraient 7 L de 7 LUMENS et que ce n'est pas ce que vous attendiez. Vous ne souhaitez pas que le mot LUMENS soit divisé en deux jetons.

Les règles simples définies précédemment sont des règles ANTLR d'analyse lexicale et sont utilisées pour diviser en jetons la chaîne de caractères d'entrée. ANTLR ne fournit pas de symbole de limite, comme le \b dans les expressions régulières. Vous devez donc être prudent lors du choix de vos règles d'analyse lexicale, car elles définissent comment sont divisées en jetons les chaînes d'entrée.

Vous pouvez résoudre ce problème en utilisant deux approches différentes :

La première approche est la définition d'une autre règle simple mettant en correspondance un mot et une valeur numérique, la règle Amount dans cet exemple :

La règle simple est une règle d'analyse syntaxique, une règle Format commençant par une majuscule. Si vous testez cette règle dans la perspective Profiling du Studio, vous pouvez constater que les quantités non liquides sont mises en correspondance par cette règle. La règle LiquidAmount met en correspondance uniquement les séquences attendues de caractères.

La seconde approche consiste en une règle avancée telle une expression régulière et en la définition d'une limite de mot avec \b. Vous pouvez utiliser un analyseur lexical afin de diviser en jetons les quantités pour lesquelles vous mettez en correspondance tout mot avec une valeur numérique. Ensuite, utilisez une expression régulière qui met en correspondance les quantités de liquide comme suit : un nombre suite d'un espace facultatif et suivi de L ou ML et terminé par une limite de mot.

Notez que l'expression régulière va être appliquée sur les jetons créés par la règle d'analyse lexicale.

Vous ne pouvez vérifier les résultats de la règle avancée en testant la règle dans la perspective Profiling du Studio comme vous le faites pour les règles simples. Cela signifie que le seul moyen de voir les résultats des règles avancées est de les utiliser dans un Job. Les résultats se présentent comme suit :
3M PROJECT LAMP 7 LUMENS 32ML
<record>
	<Amount>3M</Amount> 
	<Amount>7 LUMENS</Amount>
	<LiquidAmount>32ML</LiquidAmount> 
	<UNMATCHED> 
		<CAPWORD>PROJECT</CAPWORD> 
		<CAPWORD>LAMP</CAPWORD> 
	</UNMATCHED> 
</record>

Pour un exemple de Job concernant l'utilisation des règles ci-dessus, consultez Utiliser deux niveaux de parsing pour extraire des informations de données non structurées.

La première approche utilise uniquement la grammaire ANTLR et peut être plus efficace que la seconde, qui nécessite une seconde passe de parsing, afin de vérifier chaque jeton par rapport à l'expression régulière. Les expressions régulières permettent aux personnes ayant une certaine connaissance de ces expressions de créer des règles plus avancées, qui ne pourraient pas vraiment être créées à l'aide d'ANTLR uniquement.