fan out तब होता है जब आप ऐसी table से join करते हैं जिसमें हर key के लिए कई मेल खाती पंक्तियां हैं, तो बाईं तरफ की हर पंक्ति दोहरा जाती है और उस पर लगाया गया कोई भी SUM फूल जाता है। किसी रिपोर्ट में बढ़ा चढ़ाकर दिखाए गए revenue की यह सबसे आम वजह है। इसे join से पहले और बाद में पंक्तियां गिनकर पकड़ें, या aggregate करने से पहले जांचकर कि join key दाईं तरफ सचमुच unique है या नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
इससे ऐसे गलत नंबर बनते हैं जो भरोसेमंद लगते हैं, जो विश्लेषण की सबसे बुरी किस्म का bug है, और आमतौर पर इसे finance में बैठा कोई ही पकड़ता है जिसे असली total पता है। इंटरव्यूअर परिभाषा नहीं, पहले से पकड़ने की आदत चाहते हैं, और आदर्श रूप से join से पहले many वाली तरफ को aggregate करने का पैटर्न।
अपना जवाब कैसे स्ट्रक्चर करें
- तंत्र समझाएं: one to many join बाईं पंक्तियों को दोहरा देता है।
- दिखाएं कि aggregate error देने के बजाय फूल क्यों जाते हैं।
- पकड़ने की आदत दें: join से पहले और बाद में पंक्तियों की गिनती।
- join वाली तरफ key की uniqueness साफ साफ जांचें।
- हल दें: पहले many वाली तरफ aggregate करें, फिर join करें।
उदाहरण जवाब
अगर मैं order को order item से order_id पर join करूं, और किसी order में चार item हों, तो वह order वाली पंक्ति अब चार बार दिखती है। कोई error नहीं आती, पर अगर मैं फिर order का total जोड़ूं तो मैंने उस order का revenue चौगुना कर दिया। यह कपटी इसलिए है कि नंबर भरोसेमंद लगता है, बस गलत होता है, और उसे ढूंढने वाला आमतौर पर तीन हफ्ते बाद finance होता है। मेरी आदत है base table की पंक्तियां गिनना, join चलाना, दोबारा गिनना, और अगर नंबर बदला है तो मुझे बता पाना चाहिए कि क्यों। मैं पहले join key पर uniqueness भी जांच लेता हूं, एक जल्दी से किए group by और having count एक से ज्यादा के साथ, जिसमें दस सेकंड लगते हैं। हल आमतौर पर यह है कि join से पहले many वाली तरफ को उस grain तक aggregate कर लिया जाए जो मुझे चाहिए, तो मैं किसी CTE में हर order का item revenue जोड़ लेता हूं और उस एक पंक्ति प्रति order को header से वापस join कर देता हूं। इससे grain बचा रहता है और query समझने में भी आसान हो जाती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- grain बचाने के लिए किसी fan out query को आप कैसे दोबारा लिखेंगे?
- इसके लिए SELECT DISTINCT खराब हल क्यों है?
- किसी और के बनाए dashboard में इसे आप कैसे पकड़ेंगे?
डेटा एनालिस्ट के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें