SAP HANA SQL फ़ंक्शन: प्रकार और उदाहरण
⚡ स्मार्ट सारांश
SAP HANA SQL फ़ंक्शन, डेटा को एप्लिकेशन लेयर में स्थानांतरित किए बिना, क्वेरी के भीतर मानों को रूपांतरित करते हैं। सात श्रेणियां डेटा प्रकार रूपांतरण, दिनांक और समय, पूर्ण पाठ, संख्या, स्ट्रिंग, विंडो और विविध संचालन को कवर करती हैं।

SAP हाना एसक्यूएल फ़ंक्शन
SAP हाना निम्नलिखित प्रदान करता है SAP हाना कार्य-
- डेटा प्रकार रूपांतरण फ़ंक्शन - डेटा टाइप रूपांतरण फ़ंक्शन का उपयोग एक डेटा प्रकार को दूसरे में बदलने के लिए किया जाता है। नीचे डेटा टाइप रूपांतरण फ़ंक्शन की सूची दी गई है- जैसे CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY आदि।
- दिनांक समय फ़ंक्शन – दिनांक/समय को अलग प्रारूप में परिवर्तित करने के लिए दिनांक और समय फ़ंक्शन का उपयोग किया जाता है। उदाहरण के लिए – ADD_DAYS, ADD_MONTHS, ADD_SECOND, आदि।
- पूर्ण पाठ्य कार्य – टेक्स्ट सर्च के लिए फुलटेक्स्ट फंक्शन का उपयोग किया जाता है। उदाहरण के लिए – स्कोर आदि।
- संख्या कार्य – संख्या फ़ंक्शन एक संख्यात्मक मान या संख्यात्मक वर्णों वाली स्ट्रिंग को इनपुट के रूप में लेते हैं और संख्यात्मक मान लौटाते हैं। उदाहरण के लिए – ABS, ROUND, POWER, आदि।
- स्ट्रिंग फ़ंक्शन – स्ट्रिंग फ़ंक्शन इनपुट के रूप में एक स्ट्रिंग लेते हैं, उसे प्रोसेस करते हैं और फ़ंक्शन के अनुसार मान लौटाते हैं। उदाहरण के लिए (ASCII, CHAR, CONCAT, आदि)।
- विंडो फ़ंक्शन – विंडो फ़ंक्शन उपयोगकर्ता को क्वेरी के परिणाम सेट को पंक्तियों के समूहों में विभाजित करने की अनुमति देते हैं जिन्हें विंडो विभाजन कहा जाता है। उदाहरण के लिए, RANK(), DENSE_RANK(), ROW_NUMBER(), आदि।
- विविध कार्य- कुछ और फ़ंक्शन हैं, जिनका उपयोग विविध कार्य के लिए किया जाता है। जैसे - CONVERT_CURRENCY, CURRENT_SCHEMA, आदि।
ऊपर दिए गए सभी फ़ंक्शन का मूल्यांकन डेटाबेस इंजन के अंदर किया जाता है, यही कारण है कि किसी फ़ंक्शन में लॉजिक डालना, एप्लिकेशन में पंक्तियों को फ़ेच करने और उन्हें प्रोसेस करने की तुलना में लगभग हमेशा तेज़ होता है। नीचे दिए गए उदाहरणों में डमी टेबल का उपयोग किया गया है, जो एक सिंगल रो सिस्टम टेबल है और इसका उद्देश्य केवल वास्तविक डेटा को छुए बिना किसी एक्सप्रेशन का परीक्षण करना है।
स्केलर, एग्रीगेट और विंडो फ़ंक्शन
उदाहरणों से पहले, एक अंतर यह निर्धारित करता है कि कोई फ़ंक्शन क्वेरी में कैसे व्यवहार करता है: कितनी पंक्तियाँ इनपुट के रूप में जाती हैं, और कितनी आउटपुट के रूप में आती हैं।
| वर्ग | अंदर आने वाली पंक्तियाँ : बाहर जाने वाली पंक्तियाँ | क्या इसे ग्रुप बाय के आधार पर ग्रुप करने की आवश्यकता है? | उदाहरण |
|---|---|---|---|
| अदिश | एक पंक्ति से एक पंक्ति तक | नहीं | ऊपरी, गोल, आज तक, कास्ट |
| कुल | कई पंक्तियों से एक पंक्ति तक | हां, जब तक कि पूरा सेट एक ही समूह न हो। | जोड़, AVGसंख्या, न्यूनतम, अधिकतम |
| खिड़की | कई पंक्तियों से कई पंक्तियों तक | नहीं, यह OVER का उपयोग करता है | रैंक, सघन रैंक, पंक्ति संख्या, अंतराल |
| तालिका | परिणाम सेट लौटाता है | FROM क्लॉज़ में प्रयुक्त | सीरीज़_जनरेट_डेट |
इसका व्यावहारिक परिणाम यह है कि एग्रीगेट फ़ंक्शन विवरण को कम कर देता है, जबकि विंडो फ़ंक्शन उसे संरक्षित रखता है। प्रत्येक कर्मचारी और उनके विभाग के औसत डेटा के लिए विंडो फ़ंक्शन की आवश्यकता होती है, क्योंकि ग्रुप बाय फ़ंक्शन व्यक्तिगत पंक्तियों को पूरी तरह से हटा देगा।
सामान्य SAP HANA फंक्शन्स के उदाहरण
नीचे दिए गए कथनों को सीधे SQL कंसोल में पेस्ट किया जा सकता है। प्रत्येक कथन ऊपर दी गई सूची में से एक श्रेणी को दर्शाता है।
1) स्ट्रिंग फ़ंक्शन। ये वर्ण इनपुट लेते हैं और एक व्युत्पन्न मान लौटाते हैं।
SELECT UPPER('sap hana') AS UPPER_TEXT, LENGTH('SAP HANA') AS TEXT_LENGTH, CONCAT('SAP ', 'HANA') AS JOINED, SUBSTRING('SAP HANA', 5, 4) AS PART, REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED, TRIM(' padded ') AS CLEANED FROM DUMMY;
2) संख्या फलन। राउंडिंग व्यवहार का परीक्षण करना महत्वपूर्ण है, क्योंकि ROUND व्यावसायिक राउंडिंग का उपयोग करता है जबकि FLOOR और CEIL हमेशा एक ही दिशा में चलते हैं।
SELECT ABS(-45.7) AS ABSOLUTE_VALUE, ROUND(123.4567, 2) AS ROUNDED, FLOOR(9.9) AS ROUNDED_DOWN, CEIL(9.1) AS ROUNDED_UP, POWER(2, 10) AS RAISED, MOD(17, 5) AS REMAINDER FROM DUMMY;
3) दिनांक और समय संबंधी कार्य। आवधिक रिपोर्टिंग के लिए अक्सर इनकी ही आवश्यकता होती है।
SELECT CURRENT_DATE AS TODAY, ADD_DAYS(CURRENT_DATE, 30) AS IN_30_DAYS, ADD_MONTHS(CURRENT_DATE, -1) AS LAST_MONTH, DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED, LAST_DAY(CURRENT_DATE) AS MONTH_END, WEEKDAY(CURRENT_DATE) AS DAY_INDEX FROM DUMMY;
4) रूपांतरण फ़ंक्शन। स्पष्ट रूपांतरण उस मौन प्रकार के परिवर्तन को रोकता है जो WHERE क्लॉज़ को धीमा कर देता है।
SELECT CAST('1234' AS INTEGER) AS AS_NUMBER, TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT, TO_DECIMAL(1234.5678, 10, 2) AS AS_DECIMAL FROM DUMMY;
इसमें टाइप व्यवहार और प्रत्येक लक्ष्य प्रकार की सीमाओं को शामिल किया गया है। SAP हाना डेटा प्रकार.
विंडो के कार्यों की व्याख्या
विंडो फ़ंक्शन वर्तमान पंक्ति से संबंधित पंक्तियों के समूह पर गणना करता है, उन्हें संकुचित किए बिना। OVER क्लॉज़ उस समूह को परिभाषित करता है, और इसके दो वैकल्पिक भाग हैं: PARTITION BY डेटा को समूहों में विभाजित करता है, और ORDER BY प्रत्येक समूह के भीतर क्रम निर्धारित करता है।
SELECT DEPARTMENT, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM, RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING, DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING, SUM(SALARY) OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL FROM DHK_SCHEMA.EMPLOYEE;
तीनों रैंकिंग फ़ंक्शन केवल तभी भिन्न होते हैं जब मान बराबर होते हैं:
- पंक्ति नंबर कभी टाई नहीं होता। समान वेतन वाली दो कंपनियों को भी मनमाने ढंग से चुने गए 1 और 2 अंक ही मिलते हैं।
- दर्जा समान संख्या वाली पंक्तियों को समान संख्या दी जाती है और फिर एक पंक्ति छोड़ दी जाती है। 1 पर दो पंक्तियों के बाद 3 आता है।
- सघन_रैंक समान संख्या वाली पंक्तियों को समान संख्या दी जाती है और कोई पंक्ति छोड़ी नहीं जाती। 1 से शुरू होने वाली दो पंक्तियों के बाद 2 आता है।
डुप्लिकेट हटाने के लिए ROW_NUMBER, प्रतियोगिता शैली में स्थान निर्धारण के लिए RANK और अनुक्रम को अटूट रखने के लिए DENSE_RANK का उपयोग करें। इन कार्यों के साथ उपयोग किए जाने वाले तुलना और तार्किक प्रतीकों को आगे समझाया गया है। SAP हाना ऑपरेटरऔर कथन संरचना में SAP हाना एसक्यूएल.
