मैं गंतव्य सर्वर पर एक स्टेजिंग तालिका लोड करने की सलाह दूंगा और फिर परिणाम सर्वर पर एक लक्ष्य तालिका में विलय कर दूंगा। यदि आपको किसी भी स्वच्छता नियम चलाने की आवश्यकता है, तो आप इसे संग्रहीत प्रक्रिया के माध्यम से कर सकते हैं क्योंकि आप एसएसआईएस डेटा प्रवाह परिवर्तन कार्यों के मुकाबले बेहतर प्रदर्शन प्राप्त करने के लिए बाध्य हैं। इसके अलावा, deduping आमतौर पर एक बहु-चरण प्रक्रिया है। आप इस पर कटौती करना चाहेंगे:
- विशिष्ट रेखाएं।
- आदि पहला नाम की तरह कॉलम, अंतिम नाम, ईमेल पता,
- की अलग समूहों आप किसी मौजूदा लक्ष्य तालिका के खिलाफ डेड्यूप कर सकते हैं। यदि ऐसा है, तो आपको EXISTS या बयान में शामिल करने की आवश्यकता हो सकती है। या आप मूल पंक्ति को नए मानों के साथ अपडेट करना चाह सकते हैं। यह आम तौर पर एक मर्ज स्टेटमेंट और स्रोत के लिए एक सबक्वायरी के साथ सबसे अच्छा सेवा प्रदान की जाती है।
- किसी विशेष पैटर्न की पहली या अंतिम पंक्ति लें। उदाहरण के लिए, आप एक ईमेल पता या फोन नंबर की प्रत्येक घटना के लिए फ़ाइल में अंतिम पंक्ति दर्ज कर सकते हैं। मैं अनुक्रमिक क्रम उत्पन्न करने के क्रम में सीटीई के साथ ROW_NUMBER() पर भरोसा करता हूं और अनुवर्ती नमूना जैसे रिवर्स ऑर्डर कॉलम:
।
WITH
sample_records
( email_address
, entry_date
, row_identifier
)
AS
(
SELECT '[email protected]'
, '2009-10-08 10:00:00'
, 1
UNION ALL
SELECT '[email protected]'
, '2009-10-08 10:00:01'
, 2
UNION ALL
SELECT '[email protected]'
, '2009-10-08 10:00:02'
, 3
UNION ALL
SELECT '[email protected]'
, '2009-10-08 10:00:00'
, 4
UNION ALL
SELECT '[email protected]'
, '2009-10-08 10:00:00'
, 5
)
, filter_records
( email_address
, entry_date
, row_identifier
, sequential_order
, reverse_order
)
AS
(
SELECT email_address
, entry_date
, row_identifier
, 'sequential_order' = ROW_NUMBER() OVER (
PARTITION BY email_address
ORDER BY row_identifier ASC)
, 'reverse_order' = ROW_NUMBER() OVER (
PARTITION BY email_address
ORDER BY row_identifier DESC)
FROM sample_records
)
SELECT email_address
, entry_date
, row_identifier
FROM filter_records
WHERE reverse_order = 1
ORDER BY email_address;
deduping फाइलों पर आप के लिए बहुत सारे विकल्प हैं, लेकिन अंत में मैं एक संग्रहीत प्रक्रिया में इस से निपटने की सलाह देते हैं एक बार आप गंतव्य सर्वर पर एक मचान तालिका भरी हुई है। डेटा को साफ करने के बाद, आप या तो अपने अंतिम गंतव्य में मेर्ज या इंसर्ट कर सकते हैं।
स्रोत
2009-10-08 17:23:32
जब आप "डुप्लीकेट" कहते हैं, तो क्या आपका मतलब है कि रिकॉर्ड समान हैं, या रिकॉर्ड जहां प्राथमिक कुंजी समान हैं? –