Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
barbawawa
Contributor III
Contributor III

Diviser un champ "concaténé"

Bonjour à tous, 

J'ai des tables qui contiennent des dates et des n° d'évènements propres à ma société.

Un évènement "event_ID" peut être composé de plusieurs "CAPA_EVENT" mais voilà , les deux   "CAPA_EVENT" sont concaténés d'office dans mes tables. Seulement j'ai besoin de les dissocier pour pouvoir les compter, et c'est là que je viens faire appel à vous , comment faire ? Sachant que j'ai des dates de créations de ces fameux "CAPA_EVENT" qui sont aussi concaténées , qu'il va falloir que je dissocie également mais tout en gardant la notion de première CAPA=Première date , etc... je vous joins une capture qui sera plus parlante. 

Merci par avance pour votre aide 🙂 

1 Solution

Accepted Solutions
DavidDocquoyBaudelet
Contributor III
Contributor III

Alors en fait, tes dates ne sont pas séparé par un ";" mais par une virgule 😉

L'instruction Subfield dois donc être comme ca : subfield("capa_event_code",',') as CAPA

Le 2eme paramètre étant le caractère de séparation.

Il faut bien sur adapter ma solution en fonction de ton contexte, que je ne connais pas intégralement 😉

Comme quoi, voir le code ne suffit pas, il faut aussi connaitre les data 🙂

 

 

View solution in original post

8 Replies
DavidDocquoyBaudelet
Contributor III
Contributor III

Salut,

J'ai une solution assez sympa 🙂

- Je fait 2 tables, une pour les CAPA_EVENT et une pour les CAPA_EVENT_DATE, en numérotant les lignes, puis je rassemble les 2 😉

Et en partant de ca : 

DavidDocquoyBaudelet_0-1639663318806.png

J'arrive à ca 🙂 

DavidDocquoyBaudelet_1-1639663352474.png

Je mets le script en PJ 😉

 

 

 

 

barbawawa
Contributor III
Contributor III
Author

Merci beaucoup pour ton retour, je suis ultra débutant par contre, du coup, tu m'as un peu beaucoup perdu.

Ta méthode si j'ai bien compris implique de connaitre exactement le nombre de CAPA non ? car moi c'est variable au fil des jours . Mes données viennent d'une database Oracle .

Cdt, 

Barba

 

 

DavidDocquoyBaudelet
Contributor III
Contributor III

Oups désolé, c'est un peu technique en effet 🙂

Ma méthode n'implique pas de connaitre le nombre d'élément, puisque je les compte 😉

Il faut savoir que le SUBFIELD va générer autant d'enregistrement que de composant du champs.

Je vais tacher de décomposer : 

- D'abord j'ai ce script la : 

CAPATEMP:
NoConcatenate
Load
EVENT,
subfield(CAPA,';') as CAPA
resident CAPA;

Qui permets d'éclater le champs CAPA_EVENT pour en mettre un par ligne.

En sortie, on obtiens ca : 

DavidDocquoyBaudelet_0-1639667832928.png

Puis j'ajoute une numérotation, un indice par EVENT, comme ca : 

CAPAFINAL:
NoConcatenate
Load
EVENT,
RowNo() as numligne,
if(EVENT <> Previous(EVENT),1,previous(peek('NumEvent'))+1) as NumEvent,
CAPA
resident CAPATEMP;

Pour obtenir ca :

DavidDocquoyBaudelet_1-1639667934372.png

Et ensuite je fait pareil avec le champ Date.

Ce qui au final me fait cette autre table : 

DavidDocquoyBaudelet_2-1639667993141.png

 

Il ne me reste plus qu'à joindre les 2 tables grâce au couple EVENT + NumEvent 😉

J'espère que c'est un peu plus clair 😉

 

 

 

 

 

 

barbawawa
Contributor III
Contributor III
Author

Bonjour, 

J'ai essayé mais je n'obtiens pas l'attendu 😞 , je te joins mon script et j'ai mis en orange les champs en question.

Le champ Event_ID est la souche, celui-ci est décomposé en plusieurs capa_event_code , c'est ce dernier que je veux décomposer ainsi que closure_date

 

CAPA :
LOAD "workflow_id",
"event_id",
title,
description,
"detection_date",
"event_date",
"is_repeated_deviation",
"root_cause_analysis",
"preliminary_information",
"immediat_actions",
"event_type",
"investigation_categories",
"due_date",
subtype,
"type",
"lastupdate_date",
"event_status",
"event_status_corrected",
rejected,
site,
activity,
location,
"extended_due_date",
"deviation_level",
"deviation_level_revi",
"investigation_start",
"investigation_end",
"investigation_conclusion",
"investigation_team_members",
"quality_assurance_expert",
"investigation_leader",
"invest_steps_due_dates",
"invest_steps_titles",
"invest_steps_responsibles",
"invest_steps_status",
"invest_steps_sleeping_status",
"capa_comments",
"capa_title",
"capa_descriptions",
"capa_event_code",
"capa_creation_date",
"capa_closure_date",
"capa_summary_implementation",
"capa_impl_responsible_name",
"capa_expert_responsible_name",
"batch_code",
"item_code",
"item_designation",
"related_event_ids",
"related_event_count",
"equipment_code",
"equipment_designation",
"er_summaries",
operation,
"root_cause_classification",
"root_cause_sub_classification",
"level_real",
"level_potential",
"creation_date",
"post_date",
"acceptance_date",
"assessment_date",
"closure_date",
"creation_user",
"post_user",
"acceptance_user",
"assessment_user",
"closure_user",
"pip_requested_at",
"new_minor_flow",
"keywords_minor_flow";

FROM AwsDataCatalog."prod-phenix-business-data"."deviation_capa"

 


CAPATEMP:
NoConcatenate
Load
"event_id",
subfield("capa_event_code",';') as CAPA
resident CAPA;

CAPAFINAL:
NoConcatenate
Load
"event_id",
RowNo() as numligne,
if("event_id" <> Previous("event_id"),1,previous(peek('NumEvent'))+1) as NumEvent,
CAPA
resident CAPATEMP;

DavidDocquoyBaudelet
Contributor III
Contributor III

Quand j'ai un souci, je le décompose, ca permets de simplifier les problèmes 🙂

Donc cette 1ere partie

CAPATEMP:
NoConcatenate
Load
"event_id",
subfield("capa_event_code",';') as CAPA
resident CAPA;

dois permettre d'obtenir une 1ere table, avec l'éclatement en autant de ligne qu'il y a de capa_event_code par event_id.

Est-ce que déjà, cela marche ?

La 2eme requête va permettre elle d'ajouter un indice unique par couple "event_id+capa_event_code".

Est-ce que déjà, cela marche ?

Si oui, on progresse 🙂

Il faut ensuite refaire la même chose mais avec cette fois le champs closure_date.

On dois obtenir donc 2 tables qu'on joints par la clé "event_id+NumEvent"

 

 

barbawawa
Contributor III
Contributor III
Author

Tout d'abord, un grand merci pour ton temps, c'est super sympa de ta part. 

La première partie ne fonctionne pas malheureusement, je joins une capture.

DavidDocquoyBaudelet
Contributor III
Contributor III

Alors en fait, tes dates ne sont pas séparé par un ";" mais par une virgule 😉

L'instruction Subfield dois donc être comme ca : subfield("capa_event_code",',') as CAPA

Le 2eme paramètre étant le caractère de séparation.

Il faut bien sur adapter ma solution en fonction de ton contexte, que je ne connais pas intégralement 😉

Comme quoi, voir le code ne suffit pas, il faut aussi connaitre les data 🙂

 

 

barbawawa
Contributor III
Contributor III
Author

Yes ça fonctionne !!! j'ai appris quelque chose grâce à toi, encore merci pour ton aide, et je te souhaite de bonnes fêtes de fin d'année