slowly changing dimensions बताते हैं कि dimension tables में attribute के बदलावों को आप कैसे संभालते हैं। Type 1 पुराना मान मिटाकर लिख देता है और इतिहास खो देता है। Type 2 हर बदलाव पर एक नई row डालता है, जिसमें surrogate key, valid_from और valid_to timestamps, और एक current flag होता है, ताकि facts उसी attribute version से जुड़ें जो उस वक्त सच था। Type 3 सिर्फ एक पिछली स्थिति के लिए previous value का column रखता है।
इंटरव्यूअर यह क्यों पूछते हैं
यह dimensional modeling का मूल सवाल है, और यह उन लोगों को अलग कर देता है जिन्होंने warehouse बनाया है उनसे जिन्होंने सिर्फ query किया है। इंटरव्यूअर surrogate key सुनना चाहते हैं, क्योंकि जैसे ही एक entity की कई rows हो जाती हैं natural keys टूट जाती हैं, और वे यह भी सुनना चाहते हैं कि facts मौजूदा वाले की जगह सही historical version से कैसे जुड़ते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- type 1, 2 और 3 को एक एक लाइन में परिभाषित करें।
- type 2 के columns खोलकर बताएं: surrogate key, valid_from, valid_to, is_current।
- समझाएं कि facts event time पर सही version से कैसे जुड़ते हैं।
- load logic बताएं: पुरानी row बंद करें, नई डालें।
- कीमत का जिक्र करें: table का बढ़ना और query की जटिलता।
उदाहरण जवाब
Type 1 बस मान के ऊपर लिख देता है, इसलिए इतिहास चला जाता है। Type 2 हर बार attribute बदलने पर एक row जोड़कर इतिहास रखता है। व्यावहारिक तौर पर इसका मतलब है primary key के तौर पर एक surrogate key, उसके साथ असली business key, valid_from और valid_to timestamps, और सहूलियत के लिए एक is_current boolean। fact table वही surrogate key रखता है जो event होते वक्त current थी, इसलिए मार्च का कोई sales fact आज भी उस sales rep के मार्च वाले territory से जुड़ता है, उनके आज वाले से नहीं। यही फर्क पूरी बात है, और गलती होने पर finance वाले सबसे पहले यही पकड़ेंगे। load एक merge होता है: वे rows ढूंढें जिनके tracked columns बदले हैं, मौजूदा row पर valid_to सेट करें, और valid_from भरकर तथा valid_to को null या बहुत आगे की तारीख रखकर नई row डालें। मैं आम तौर पर tracked columns को hash करके एक change key बना देता हूं ताकि तुलना बीस के बजाय एक equality check रह जाए।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- देर से आने वाले dimension record को आप कैसे संभालते हैं?
- अगर आप natural key इस्तेमाल करें तो fact table का क्या होगा?
- dbt में type 2 आप कैसे लागू करेंगे?
डेटा इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें