Database
 sql >> डेटाबेस >  >> RDS >> Database

एससीडी टाइप 3

डायमेंशनल डेटा जो धीरे-धीरे या अप्रत्याशित रूप से बदलता है, उसे स्लोली चेंजिंग डाइमेंशन (एससीडी) विश्लेषण में कैप्चर किया जाता है। डेटा वेयरहाउस परिवेश में, एक आयाम तालिका में एक प्राथमिक कुंजी होती है जो प्रत्येक रिकॉर्ड और जानकारी के अन्य टुकड़ों की विशिष्ट रूप से पहचान करती है जिन्हें आयामी डेटा के रूप में जाना जाता है।

विभिन्न SCD प्रकारों के लिए सभी अद्यतन विधियों को IRI CoSort में SortCL प्रोग्राम का उपयोग करके पूरा किया जा सकता है। IRI Voracity में SortCL प्रोग्राम चलाते समय उपयोग की जाने वाली SCD जॉब स्क्रिप्ट बनाने में सहायता करने के लिए एक विज़ार्ड है। अधिकांश विविधताएं मूल मास्टर डेटा स्रोत से रिकॉर्ड का मिलान करने के लिए एक पूर्ण बाहरी जुड़ाव का उपयोग करती हैं, जिसमें प्रत्येक से एक कुंजी की बराबरी करने के आधार पर अद्यतन स्रोत में रिकॉर्ड होते हैं। मैचों के साथ रिकॉर्ड को मास्टर में अद्यतन करने की आवश्यकता है। अद्यतन स्रोत में ऐसे रिकॉर्ड जिनका मिलान नहीं है, उन्हें मास्टर में जोड़ने की आवश्यकता है।

यहां एससीडी टाइप 3 का उपयोग करके एक आयामी फ़ाइल को अपडेट करने का एक सिंहावलोकन है जहां मैं उत्पाद लागतों को बनाए रख रहा हूं। ProductCode . फ़ील्ड के संबंध में जुड़कर अपडेट पूरा किया जाता है ।

टाइप 3 एससीडी

टाइप 3 मॉडल के साथ, वर्तमान डेटा और ऐतिहासिक डेटा को एक ही रिकॉर्ड में ले जाया जाता है। इतिहास को कितना रखा जाना चाहिए, यह तय करने वाली प्रमुख चीजों में से एक है। हमारे उदाहरण के साथ, मैं तीन प्रारंभ तिथियों के लिए लागत रखूंगा। समाप्ति तिथि वह तिथि है जब रिकॉर्ड में लागत अब प्रभावी नहीं होती है। यदि लागत अभी भी प्रभावी है, तो EndDate1 फ़ील्ड को 99991231 पर सेट किया जाएगा। यह इस फ़ील्ड में खाली मान से बचने के लिए है। यहां शुरुआती मास्टर स्रोत (master3.dat) में निहित मान दिए गए हैं:

ProductCode Cost1 StartDate1 EndDate1 Cost2 StartDate2 EndDate2 Cost3 StartDate3 EndDate3
C123 125.50 20110228 99991231
F112 2365.00 20120101 99991231
G101 19.25 20110930 99991231 21.25 20110501 20110930
J245 450.50 20110430 99991231 425.25 20101001 20110430 385.25 20100215 20101001
S022 98.75 20110515 99991231

सभी अद्यतन अभिलेखों की प्रारंभ दिनांक समान होती है। Update.dat स्रोत में रिकॉर्ड के लिए निम्न फ़ील्ड मान शामिल हैं:

ProductCode लागत StartDate
F112 2425.00 20120701
J245 550.50 20120701
M447 101.75 20120701
S022 101.75 20120701

नीचे अद्यतन डेटा है। अद्यतन किए गए प्रत्येक रिकॉर्ड के लिए, प्रत्येक लागत, प्रारंभ दिनांक और समाप्ति तिथि को एक सेट द्वारा दाईं ओर ले जाया जाता है। रिकॉर्ड के लिए पुराने वर्तमान समूह में, नए अद्यतन वर्तमान सेट के लिए समाप्ति तिथि को प्रारंभ तिथि में बदल दिया जाता है। पुराने तीसरे सेट के लिए कोई भी मान छोड़ दिया जाता है।

ProductCode Cost1 StartDate1 EndDate1 Cost2 StartDate2 EndDate2 Cost3 StartDate3 EndDate3
C123 125.50 20110228 9991231
F112 2425.00 20120701 9991231 2365.00 20120101 20120701
G101 19.25 20110930 9991231 21.25 20110501 20110930
J245 550.50 20120701 9991231 450.50 20110430 20120701 425.25 20101001 20110430
M447 101.75 20120701 9991231
S022 101.75 20120701 9991231 98.75 20110515 20120701

आईआरआई वर्कबेंच में, डायमेंशनल फाइल्स और टेबल्स को अपडेट करने के लिए स्क्रिप्ट के निर्माण में सहायता करने के लिए वोरासिटी विजार्ड है। यह विज़ार्ड नेविगेशन बार पर वोरसिटी ड्रॉपडाउन में स्थित है। सबसे पहले आप SCD टाइप को चुनें। फिर वह विंडो जहाँ आप उन फ़ाइलों का चयन करते हैं जिनका उपयोग अद्यतन को संसाधित करने के लिए किया जाता है, प्रदर्शित होती है।

अगली स्क्रीन पर शीर्ष तालिका में, आप निर्धारित करते हैं कि कैसे अद्यतन किया जा रहा डेटा मास्टर को मैप किया जाता है। स्क्रीन पर मध्य समूह में, उन फ़ील्ड्स को चुनें जो अद्यतन किए जा रहे रिकॉर्ड के लिए स्थिति मान देते हैं।

वर्तमान . के अंतर्गत ड्रॉपडाउन में और ऐतिहासिक क्षेत्र समूह , पहला सेट जिसे आप परिभाषित करते हैं, वर्तमान मानों के लिए फ़ील्ड नाम देता है। मान फ़ील्ड वह आयामी मान है जिसे अद्यतन किया जा रहा है। प्रारंभ फ़ील्ड वह फ़ील्ड है जो निर्धारित करती है कि मान फ़ील्ड सक्रिय हो गया और अंतिम फ़ील्ड निर्धारित करता है कि यह कब मान्य नहीं है। फिर जितने ऐतिहासिक मूल्यों को रखा जा रहा है, उतने सेटों को परिभाषित करें।

यहां कार्य स्क्रिप्ट है जो मास्टर फ़ाइल को अपडेट करेगी:

/INFILE=master3.dat
    /PROCESS=DELIMITED
    /ALIAS=master3
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",")
    /FIELD=(COST1, TYPE=NUMERIC, POSITION=2, SEPARATOR=",")
    /FIELD=(STARTDATE1, TYPE=ASCII, POSITION=3, SEPARATOR=",")
    /FIELD=(ENDDATE1, TYPE=ASCII, POSITION=4, SEPARATOR=",")
    /FIELD=(COST2, TYPE=NUMERIC, POSITION=5, SEPARATOR=",")
    /FIELD=(STARTDATE2, TYPE=ASCII, POSITION=6, SEPARATOR=",")
    /FIELD=(ENDDATE2, TYPE=ASCII, POSITION=7, SEPARATOR=",")
    /FIELD=(COST3, TYPE=NUMERIC, POSITION=8, SEPARATOR=",")
    /FIELD=(STARTDATE3, TYPE=ASCII, POSITION=9, SEPARATOR=",")
    /FIELD=(ENDATE3, TYPE=ASCII, POSITION=10, SEPARATOR=",")
/INFILE=update.dat
    /PROCESS=DELIMITED
    /ALIAS=update
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
    /FIELD=(COST, TYPE=ASCII, POSITION=2, SEPARATOR=",", FRAME='\"')
    /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')

/JOIN FULL_OUTER master3 update WHERE MASTER3.PRODUCTCODE == UPDATE.PRODUCTCODE

/OUTFILE=master3.dat
# Include only records that are to be updated
    /PROCESS=DELIMITED
    /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",")
    /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",")
    /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",")
    /FIELD=(ENDDATE1_NEW="99991231", TYPE=ASCII, POSITION=4, SEPARATOR=",")
    /FIELD=(MASTER3.COST1, TYPE=NUMERIC, POSITION=5, SEPARATOR=",")
    /FIELD=(MASTER3.STARTDATE1, TYPE=ASCII, POSITION=6, SEPARATOR=",")
    /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=7, SEPARATOR=",")
    /FIELD=(MASTER3.COST3, TYPE=NUMERIC, POSITION=8, SEPARATOR=",")
    /FIELD=(MASTER3.STARTDATE3, TYPE=ASCII, POSITION=9, SEPARATOR=",")
    /FIELD=(MASTER3.ENDATE3, TYPE=ASCII, POSITION=10, SEPARATOR=",")
    /INCLUDE WHERE MASTER3.PRODUCTCODE == UPDATE.PRODUCTCODE

/OUTFILE=master3.dat
# Include only records that are not to be updated
    /PROCESS=DELIMITED
    /FIELD=(MASTER3.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",")
    /FIELD=(MASTER3.COST1, TYPE=NUMERIC, POSITION=2, SEPARATOR=",")
    /FIELD=(MASTER3.STARTDATE1, TYPE=ASCII, POSITION=3, SEPARATOR=",")
    /FIELD=(MASTER3.ENDDATE1, TYPE=ASCII, POSITION=4, SEPARATOR=",")
    /FIELD=(MASTER3.COST2, TYPE=NUMERIC, POSITION=5, SEPARATOR=",")
    /FIELD=(MASTER3.STARTDATE2, TYPE=ASCII, POSITION=6, SEPARATOR=",")
    /FIELD=(MASTER3.ENDDATE2, TYPE=ASCII, POSITION=7, SEPARATOR=",")
    /FIELD=(MASTER3.COST3, TYPE=NUMERIC, POSITION=8, SEPARATOR=",")
    /FIELD=(MASTER3.STARTDATE3, TYPE=ASCII, POSITION=9, SEPARATOR=",")
    /FIELD=(MASTER3.ENDATE3, TYPE=ASCII, POSITION=10, SEPARATOR=",")
    /OMIT WHERE MASTER3.PRODUCTCODE == UPDATE.PRODUCTCODE
    /OMIT WHERE MASTER3.PRODUCTCODE EQ ""
/OUTFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD3/master3.dat
# Add new records
    /PROCESS=DELIMITED
    /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",")
    /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",")
    /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",")
    /FIELD=(ENDDATE1_NEW="99991231", TYPE=ASCII, POSITION=4, SEPARATOR=",")
    /INCLUDE WHERE MASTER3.PRODUCTCODE EQ "" AND UPDATE.PRODUCTCODE NE ""

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटा गवर्नेंस के लिए मानवीय दृष्टिकोण अपनाएं

  2. त्वरित युक्ति - लेन-देन लॉग से धीमी पुनर्स्थापना को गति दें

  3. एमएस एसक्यूएल को आईआरआई वर्कबेंच से जोड़ना

  4. क्या Google डेटा एनालिटिक्स प्रोफेशनल सर्टिफिकेट इसके लायक है?

  5. हमारे पैरामीटर सूँघने वेबिनार श्रृंखला से प्रश्नोत्तर: