डायमेंशनल डेटा जो धीरे-धीरे या अप्रत्याशित रूप से बदलता है, उसे स्लोली चेंजिंग डाइमेंशन (एससीडी) विश्लेषण में कैप्चर किया जाता है। डेटा वेयरहाउस वातावरण में, एक आयाम तालिका में एक प्राथमिक कुंजी होती है जो प्रत्येक रिकॉर्ड और जानकारी के अन्य टुकड़ों की विशिष्ट रूप से पहचान करती है जिन्हें आयामी डेटा के रूप में जाना जाता है।
विभिन्न SCD प्रकारों के लिए सभी अद्यतन विधियों को IRI CoSort में SortCL प्रोग्राम का उपयोग करके पूरा किया जा सकता है। IRI Voracity में SortCL प्रोग्राम चलाते समय उपयोग की जाने वाली SCD जॉब स्क्रिप्ट बनाने में सहायता करने के लिए एक विज़ार्ड है। अधिकांश प्रकार मूल डेटा स्रोत से रिकॉर्ड का मिलान करने के लिए एक पूर्ण बाहरी जुड़ाव का उपयोग करते हैं, जिसमें प्रत्येक से एक कुंजी की बराबरी के आधार पर अद्यतन स्रोत में रिकॉर्ड होते हैं। मैचों के रिकॉर्ड को अद्यतन करने की आवश्यकता है। अद्यतन स्रोत में ऐसे रिकॉर्ड जिनका मिलान नहीं है, उन्हें मास्टर में जोड़ने की आवश्यकता है।
यह आलेख एससीडी टाइप 1 मॉडल को कवर करता है, जहां अद्यतन डेटा से नई जानकारी मास्टर स्रोत में मूल जानकारी को अधिलेखित कर देती है। बिना मिलान के अद्यतन स्रोत में रिकॉर्ड नए मास्टर में जोड़े जाते हैं। चूंकि इस मॉडल में पुराने मूल्यों को वर्तमान मूल्यों के साथ ओवरराइट करना शामिल है, और कोई इतिहास नहीं रखता है, इसलिए इसका अक्सर उपयोग नहीं किया जाता है।
उत्पाद कोड फ़ील्ड के संबंध में शामिल होने से अद्यतन पूरा किया जाता है। इस उदाहरण के लिए, वर्तमान डेटा स्रोत फ़ाइल होगा master1.dat और update.dat का उपयोग वर्तमान मास्टर स्रोत में मान बदलने या रिकॉर्ड जोड़ने के लिए किया जाता है।
Master1.dat स्रोत में शामिल हैं:
ProductCode | लागत | StartDate |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
J245 | 450.50 | 20110430 |
S022 | 98.75 | 20110515 |
इस मामले में, अद्यतन डेटा में सभी समान StartDate होंगे। Update.dat स्रोत में निम्न मानों वाले रिकॉर्ड हैं:
ProductCode | लागत | StartDate |
---|---|---|
F112 | 2425.00 | 20120701 |
J245 | 550.50 | 20120701 |
M447 | 101.75 | 20120701 |
S022 | 101.75 | 20120701 |
नई आयामी तालिका में अपडेट के बाद ये मान होंगे:
ProductCode | लागत | StartDate |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2425.00 | 20120701 |
G101 | 19.25 | 20110930 |
J245 | 550.50 | 20120701 |
M447 | 139.25 | 20120701 |
S022 | 101.75 | 20120701 |
आईआरआई वर्कबेंच में, डायमेंशनल फाइल्स और टेबल्स को अपडेट करने के लिए स्क्रिप्ट के निर्माण में सहायता करने के लिए एक विजार्ड है। यह विज़ार्ड नेविगेशन बार पर वोरसिटी ड्रॉपडाउन में स्थित है। सबसे पहले आप SCD टाइप को चुनें। फिर वह विंडो जहाँ आप उन फ़ाइलों का चयन करते हैं जिनका उपयोग अद्यतन को संसाधित करने के लिए किया जाता है, प्रदर्शित होती है।
अगली स्क्रीन मास्टर और अद्यतन स्रोतों के साथ किए गए जुड़ाव को परिभाषित करने के लिए है
नीचे सॉर्टक्ल जॉब स्क्रिप्ट है जो दो फाइलों मास्टर1.डेट और अपडेट.डेट को संसाधित करते समय उत्पन्न होती है:
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD1/master1.dat /PROCESS=DELIMITED /ALIAS=master1 /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat /PROCESS=DELIMITED /ALIAS=update /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /JOIN FULL_OUTER NOT_SORTED master1 NOT_SORTED update WHERE MASTER1.PRODUCTCODE == UPDATE.PRODUCTCODE /OUTFILE=/master1.dat # This processes all except the new records /PROCESS=DELIMITED /FIELD=(MASTER1.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST_NEW, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.COST ELSE MASTER1.COST) /FIELD=(STARTDATE_NEW, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.STARTDATE ELSE MASTER1.STARTDATE) /INCLUDE WHERE MASTER1.PRODUCTCODE NE "" /OUTFILE=master1.dat # This processes the new records to be added /PROCESS=DELIMITED /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') I /INCLUDE WHERE MASTER1.PRODUCTCODE EQ ""