Home > architecture, Data Integratie, Data Management, Data Modeling, Datawarehouse, Informatie Architectuur, Tools > Proces Metadata vs Powercenter metadata: een praktische invulling

Proces Metadata vs Powercenter metadata: een praktische invulling

December 19th, 2011 Leave a comment Go to comments

Soms kan het handig zijn om in je metadatamodel informatie van je applicatielaag op te nemen. We denken dan bijvoorbeeld aan: met welke techniek en welke versie heb ik deze data in m’n datawarehouse geladen? Of met welke versie heb ik een data conversie uitgevoerd. Natuurlijk is elke powercenter ontwikkelaar bekend met het welbekende $PMWorkflowRunId die als variabele in een mapping gebruikt kan worden.

Door een model te ontwikkelen waarin proces metadata wordt opgeslagen is het met het $PMWorkflowRunId mogelijk om een koppeling te vinden naar de applicatie laag. Dit kan door een $PMWorkflowRunId en op basis van $PMWorkflowName te koppelen aan een workflow id.


Procesrun bevat informatie over een run: bijvoorbeeld: $PMWorkflowRunId, start tijd, eindtijd en een workflow_id uit de worfklow entiteit opgezocht aan de hand van de variabele $PMWorkflowName.
Workflow bevat bepaalde workflow gegevens en Mapping bevat uiteraard mapping gegevens.

In een mapping kan met behulp van het $PMWorkflowRunId een koppeling gemaakt worden met proces data.

De kunst is het om de entiteiten workflow en mapping te vullen. Powercenter heeft een eigen relationele opslag, ook wel de Powercenter repository genoemd. Hierin wordt veel omtrend de applicatie laag opgeslagen. Met behulp van navolgende SQL kan specifieke workflow, sessie en mapping informatie opgehaald worden.

SELECT f.subj_name      AS folder_name,
wf.task_name     AS workflow_name,
wf.comments      AS workflow_comments,
se.instance_name AS session_name,
ma.mapping_name  AS mapping_comments,
ma.comments,
workflow_id,
ma.subject_id,
ma.mapping_id,
ma.subject_id,
ma.last_saved    AS mapping_last_saved,
wf.last_saved    AS workflow_last_saved
FROM   opb_subject f
JOIN opb_task wf      ON wf.subject_id = f.subj_id
JOIN (SELECT workflow_id,
instance_id,
task_id,
task_type,
instance_name,
MAX(version_number)
FROM   opb_task_inst sess
WHERE  sess.task_type = 68
GROUP  BY workflow_id,instance_id,task_id,task_type,instance_name) se ON se.workflow_id = wf.task_id
JOIN (SELECT session_id,
mapping_id,
MAX(version_number)
FROM   opb_session
GROUP  BY session_id,mapping_id) s     ON se.task_id = s.session_id
JOIN opb_mapping ma  ON s.mapping_id = ma.mapping_id
WHERE  wf.is_visible = 1
AND wf.task_type = 71
AND ma.is_visible = 1
AND f.subj_name = ‘mijn folder’

 

Uiteraard is het belangrijk om in de laatste regel de juiste folder(s) op te nemen.

Ter ondersteuning: basis mapping informatie komt voor in opb_mapping, voor workflow kan men in opb_task terecht waarbij task_type gelijk moet zijn aan 71.
Tip: als er geen licentie voor versie beheer in powercenter aanwezig is, is het verstandig om gebruik te maken van (reusable) metadata extensions op mapping niveau:

Deze kunnen met navolgende SQL uit de repository gehaald worden en kan op met METADATA_EXTN_OBJECT_ID gekoppeld worden aan mapping_id en subject_id koppelen met subject_id met bovenstaande SQL:
select  *
from    REP_METADATA_EXTNS
where domain_id = 1
and      METADATA_EXTN_OBJECT_TYPE = 21 

Het vullen van een metadataextension is mensenwerk en vergt een juiste discipline en release beleid.

Navolgende links helpen om nog meer info te vinden over specifieke repository entiteiten en attributen:
http://radhakrishnasarma.blogspot.com/
https://sites.google.com/site/ashishrkabra/informatica/informaticapowercenterrepositorytables