मैं फ़ोरम स्नोपाइप -> लोड_टेबल <-> स्टेजिंग टेबल -> फाइनल टेबल पर मिले एक दृष्टिकोण का उपयोग करके स्नोफ्लेक में डेटा लोड कर रहा हूं मेरे पास एक टास्क ट्री है जो लोड_टेबल पर स्ट्रीम की जांच करता है और यदि यह डेटा पाता है, तो लोड_टेबल को स्वैप करता है स्टेजिंग_टेबल आगे के कार्य स्टेजिंग_टेबल को अंतिम टेबल में प्रोसेस करते हैं।
यह आम तौर पर ठीक काम करता है, लेकिन जो समस्या मैं देख रहा हूं वह यह है कि मैं लोड_टेबल या स्टेजिंग_टेबल पर अनाथ रिकॉर्ड के साथ समाप्त होता हूं और लोड_स्ट्रीम खाली होता है। यह अभी उस बिंदु पर है जहां भले ही मैं मैन्युअल रूप से लोड_टेबल में डेटा डालता हूं, स्ट्रीम अभी भी खाली के रूप में चिह्नित है, इसलिए कोई कार्य नहीं चलता है।
धाराओं वाली तालिकाओं की अदला-बदली करते समय अपेक्षित व्यवहार क्या है, क्या उपरोक्त व्यवहार समर्थित है या क्या मुझे किसी विकल्प को देखने की आवश्यकता है? लक्ष्य S3 से फ़ाइलों को एक अस्थायी तालिका में लोड करने के लिए स्नोपाइप का उपयोग करना है और प्रबंधन के लिए कभी भी बढ़ती स्टेजिंग तालिका के बिना उन्हें अंतिम तालिका में विलय करना है ...
धन्यवाद!
/ कुछ प्रयोग करने को संपादित करें और ऐसा लगता है कि जब तालिकाओं की अदला-बदली की जाती है तब भी धारा "मूल" तालिका को सुनती है, इसलिए किसी भी डेटा को अनदेखा कर देगा जो स्नोपाइप "नई" तालिका में लोड होता है, भले ही वह नई तालिका मूल के साथ बदल गई हो ...
1 उत्तर
समस्या यह है कि SHOW STREAMS और DESCRIBE STREAM गलत जानकारी प्रदान करता है:
create or replace table test1 (v varchar);
create or replace table test2 (v1 varchar, v2 varchar);
create or replace stream test_stream_1 on table test1;
alter table test1 swap with test2;
show streams like 'test_stream_1';
+---------------+------------------------+
| name | table_name |
+---------------+------------------------+
| TEST_STREAM_1 | GOKHAN_DB.PUBLIC.TEST1 |
+---------------+------------------------+
यह स्वैप ऑपरेशन के बाद GOKHAN_DB.PUBLIC.TEST2 को इंगित करना चाहिए! मेरा सुझाव है कि आप एक समर्थन मामला प्रस्तुत करें।
अच्छी बात यह है कि get_ddl सही परिणाम देता है:
select get_ddl('stream','test_stream_1');
+--------------------------------------------------------+
| GET_DDL('STREAM','TEST_STREAM_1') |
+--------------------------------------------------------+
| create or replace stream TEST_STREAM_1 on table TEST2; |
+--------------------------------------------------------+
संबंधित सवाल
नए सवाल
snowflake-cloud-data-platform
स्नोफ्लेक क्लाउड डेटा प्लेटफ़ॉर्म में एक बहु-क्लस्टर, साझा वास्तुकला है जो संरचित और अर्ध-संरचित डेटा के लिए एक ही स्थान प्रदान करता है जिसे ANSI SQL का उपयोग करके क्वेरी किया जा सकता है। स्नोफ्लेक एक क्लाउड-अज्ञेयवादी प्लेटफ़ॉर्म है जो बहुत बड़े पैमाने पर है जो कई अलग-अलग वर्कलोड का समर्थन करता है: डेटा वेयरहाउसिंग और एनालिटिक्स, डेटा लेक, डेटा इंजीनियरिंग, सिक्योर डेटा शेयरिंग, डेटा एप्लिकेशन और डेटा साइंस।
STREAMS
के पूर्ण लाभों का लाभ नहीं उठा रहे हैं। बस इसके ऊपर एक स्ट्रीम के साथ एक टेबल है और सीधे स्ट्रीम से MERGE करें।