SAP HANA SQL फ़ंक्शन: प्रकार और उदाहरण

⚡ स्मार्ट सारांश

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

  • 🔄 रूपांतरण कार्य: CAST, TO_BIGINT, TO_ALPHANUM और TO_BINARY एक डेटा प्रकार से दूसरे डेटा प्रकार में मान को परिवर्तित करते हैं।
  • 📅 दिनांक और समय संबंधी कार्य: ADD_DAYS, ADD_MONTHS और ADD_SECONDS दिनांक और समय के मानों को स्थानांतरित या पुनः स्वरूपित करते हैं।
  • 🔍 पूर्ण पाठ कार्य: SCORE और इससे संबंधित फ़ंक्शन टेक्स्ट सर्च द्वारा लौटाए गए परिणामों को रैंक करते हैं।
  • 🔢 संख्या फलन: ABS, ROUND और POWER संख्यात्मक इनपुट स्वीकार करते हैं और संख्यात्मक परिणाम लौटाते हैं।
  • 🔤 स्ट्रिंग फ़ंक्शन: ASCII, CHAR और CONCAT वर्ण इनपुट को संसाधित करते हैं और एक व्युत्पन्न मान लौटाते हैं।
  • 🪟 विंडो फ़ंक्शन: RANK, DENSE_RANK और ROW_NUMBER एक परिणाम सेट को विंडो विभाजनों में विभाजित करते हैं।
  • 🧰 विविध: CONVERT_CURRENCY और CURRENT_SCHEMA अन्य छह समूहों के बाहर के कार्यों को संभालते हैं।

SAP HANA SQL फ़ंक्शन

SAP हाना एसक्यूएल फ़ंक्शन

SAP हाना निम्नलिखित प्रदान करता है SAP हाना कार्य-

  1. डेटा प्रकार रूपांतरण फ़ंक्शन - डेटा टाइप रूपांतरण फ़ंक्शन का उपयोग एक डेटा प्रकार को दूसरे में बदलने के लिए किया जाता है। नीचे डेटा टाइप रूपांतरण फ़ंक्शन की सूची दी गई है- जैसे CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY आदि।
  2. दिनांक समय फ़ंक्शन – दिनांक/समय को अलग प्रारूप में परिवर्तित करने के लिए दिनांक और समय फ़ंक्शन का उपयोग किया जाता है। उदाहरण के लिए – ADD_DAYS, ADD_MONTHS, ADD_SECOND, आदि।
  3. पूर्ण पाठ्य कार्य – टेक्स्ट सर्च के लिए फुलटेक्स्ट फंक्शन का उपयोग किया जाता है। उदाहरण के लिए – स्कोर आदि।
  4. संख्या कार्य – संख्या फ़ंक्शन एक संख्यात्मक मान या संख्यात्मक वर्णों वाली स्ट्रिंग को इनपुट के रूप में लेते हैं और संख्यात्मक मान लौटाते हैं। उदाहरण के लिए – ABS, ROUND, POWER, आदि।
  5. स्ट्रिंग फ़ंक्शन – स्ट्रिंग फ़ंक्शन इनपुट के रूप में एक स्ट्रिंग लेते हैं, उसे प्रोसेस करते हैं और फ़ंक्शन के अनुसार मान लौटाते हैं। उदाहरण के लिए (ASCII, CHAR, CONCAT, आदि)।
  6. विंडो फ़ंक्शन – विंडो फ़ंक्शन उपयोगकर्ता को क्वेरी के परिणाम सेट को पंक्तियों के समूहों में विभाजित करने की अनुमति देते हैं जिन्हें विंडो विभाजन कहा जाता है। उदाहरण के लिए, RANK(), DENSE_RANK(), ROW_NUMBER(), आदि।
  7. विविध कार्य- कुछ और फ़ंक्शन हैं, जिनका उपयोग विविध कार्य के लिए किया जाता है। जैसे - 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 हाना एसक्यूएल.

अक्सर पूछे जाने वाले प्रश्न

DUMMY एक सिस्टम टेबल है जिसमें केवल एक पंक्ति होती है। यह किसी वास्तविक टेबल का संदर्भ लिए बिना SELECT स्टेटमेंट में किसी एक्सप्रेशन या फ़ंक्शन का मूल्यांकन करने की अनुमति देता है।

दोनों ही समान पंक्तियों को एक ही संख्या देते हैं। RANK अगले मानों को छोड़ देता है, इसलिए पहले दो मानों के बाद तीसरा मान आता है। DENSE_RANK ऐसा नहीं करता, इसलिए पहले दो मानों के बाद दूसरा मान आता है।

जी हां। सरल भाषा में रूपांतरण का वर्णन करने से मिलान करने वाला फ़ंक्शन और सिंटैक्स प्राप्त होता है, जो सैकड़ों प्रविष्टियों की संदर्भ सूची को स्कैन करने की तुलना में तेज़ होता है।

अक्सर ऐसा होता है। फ़िल्टर किए गए कॉलम के चारों ओर लिपटा हुआ फ़ंक्शन कुशल फ़िल्टरिंग को रोकता है, और AI प्रेडिकेट को इस तरह से पुनर्गठित कर सकता है कि कॉलम अपरिवर्तित रहे। निष्पादन योजना के साथ इसकी पुष्टि करें।

हाँ, लेकिन इसे कॉलम पर लागू करने से हर पंक्ति पर मूल्यांकन करना पड़ता है। जहाँ तक संभव हो, स्थिरांक को रूपांतरित करें, ताकि कॉलम को कुशलतापूर्वक फ़िल्टर किया जा सके।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: