database ट्रांसेक्शनल फ्लैट डीबी से तथ्य और आयाम टेबल्स को भुनाने के लिए सर्वश्रेष्ठ अभ्यास




ssis ssas (3)

एक शुरुआत के लिए, यह इस पर निर्भर करता है कि क्या आप एक साधारण प्रारंभिक डेटा स्थानांतरण या कुछ और अधिक परिष्कृत (जैसे वृद्धिशील) करना चाहते हैं। मैं मान रहा हूँ कि आप एक प्रारंभिक डेटा स्थानांतरण कर रहे हैं।

कहें कि आपकी मद तालिका में कॉलम हैं: id, cat1, cat2, cat3, cat4, ... श्रेणियों 1-4 को मानते हुए कॉलम id, cat_name , आप dim_cat1 (आइटम श्रेणी 1 का आयाम तालिका) लोड कर सकते हैं:

insert into dim_cat1 (cat_name)
  select distinct cat1 from item_table;

आप अन्य सभी श्रेणियों / आयाम तालिकाओं के लिए भी ऐसा ही कर सकते हैं। मैं मान रहा हूँ कि आपके आयाम तालिकाओं ने स्वचालित रूप से आईडी बनाए अब, तथ्य तालिका लोड करने के लिए:

insert into fact_table (id, cat1_id, cat2_id, cat3_id, cat4_id, ...)
  select id, dc1.id
    from item_table it
      join dim_cat1 dc1 on dc1.cat_name = it.cat1
      join dim_cat2 dc2 on dc2.cat_name = it.cat2
      join dim_cat3 dc3 on dc3.cat_name = it.cat3
      join dim_cat4 dc3 on dc4.cat_name = it.cat4
 ...

यदि आपके पास पर्याप्त मात्रा में डेटा है, तो यह आइटम_टेबल में श्रेणी नामों पर अनुक्रमित बनाने के लिए और संभवतः आयाम तालिकाओं को भी समझ सकता है।

बीटीडब्लू, यह एक डाटाबेस-स्वतंत्र उत्तर है, मैं एसएसआईएस / एसएसएएस के साथ काम नहीं करता हूं: आपके पास उपकरण उपलब्ध हैं जो आपके लिए इस प्रक्रिया के कुछ हिस्सों को सुव्यवस्थित करते हैं, लेकिन यह वास्तव में मुश्किल नहीं है / सादा एसक्यूएल में लिखने का समय।

मैं SSIS / SSAS में एक स्टार स्कीमा / क्यूब को आबाद करना चाहता हूं

मैंने अपने सभी आयाम टेबल और मेरी तथ्य तालिका, प्राथमिक कुंजी आदि तैयार की।

स्रोत एक 'फ्लैट' (वस्तु स्तर) तालिका है और मेरी समस्या यह है कि इसे कैसे विभाजित किया जाए और इसे एक से संबंधित तालिकाओं में ले जाए।

मैंने googling का एक निष्पक्ष बिट किया लेकिन समस्या का एक संतोषजनक समाधान नहीं मिल सका। कोई सोचता है कि यह एक आम समस्या है / स्थिति बीआई विकास में है ?!

धन्यवाद, एलेक्स


मैं अक्सर स्टार स्कीमा के बजाय ऑपरेशनल डेटा स्टोर्स के खिलाफ क्यूब्स का निर्माण करता हूं .. प्रदर्शन हमेशा लगभग एक स्टार स्कीमा के साथ बेहतर होगा, लेकिन प्रोटोटाइप / परीक्षण के लिए, डेटा के खिलाफ क्यूब्स को विकसित करने में डर नहीं है जो आपके पास स्टार स्कीमा नहीं है ।


हम एक डेटाफ्लो कार्य का उपयोग करते हुए अंतिम पैकेज निष्पादन समय के बाद से एक अस्थायी स्टेजिंग टेबल में जानकारी की प्रतिलिपि बनाने के लिए करते हैं, फिर एक कुंजी के आधार पर उन स्टेजिंग तालिकाओं के डेटा के साथ संग्रह / वेयरहाउस को अपडेट करें, फिर उन पंक्तियों को डालें जो अभी तक मौजूद नहीं हैं । अगली बार के लिए स्टेजिंग टेबल तैयार करें, ऑडिटिंग का बोझ जोड़ें। काम हो गया?