Django 2.1 - PostgreSQL specific aggregation functions

PostgreSQL विशिष्ट एकत्रीकरण कार्य




django

PostgreSQL विशिष्ट एकत्रीकरण कार्य

इन कार्यों को पोस्टग्रेक्यूएल डॉक्स में अधिक विस्तार से वर्णित किया गया है।

ध्यान दें

सभी फ़ंक्शन डिफ़ॉल्ट उपनाम के बिना आते हैं, इसलिए आपको स्पष्ट रूप से एक प्रदान करना होगा। उदाहरण के लिए:

>>> SomeModel.objects.aggregate(arr=ArrayAgg('somefield'))
{'arr': [0, 1, 2]}

सामान्य-प्रयोजन एकत्रीकरण कार्य

ArrayAgg

class ArrayAgg(expression, distinct=False, filter=None, **extra) [source]

मानों की सूची लौटाता है, जिसमें नल, एक सरणी में सम्‍मिलित है।

distinct
Django 2.0 में नया:

एक वैकल्पिक बूलियन तर्क जो यह निर्धारित करता है कि सरणी मान अलग-अलग होंगे। False करने के लिए चूक।

BitAnd

class BitAnd(expression, filter=None, **extra) [source]

सभी गैर-शून्य इनपुट मानों की बिटवाइंड AND सभी का कोई int देता है, या यदि सभी मान शून्य हैं।

BitOr

class BitOr(expression, filter=None, **extra) [source]

सभी गैर-शून्य इनपुट मानों की बिटवाइड OR सभी का एक int लौटाता है, या None यदि सभी मान शून्य हैं।

BoolAnd

class BoolAnd(expression, filter=None, **extra) [source]

True , यदि सभी इनपुट मान सही हैं, तो None यदि सभी मान शून्य हैं या यदि कोई मान नहीं हैं, तो False

BoolOr

class BoolOr(expression, filter=None, **extra) [source]

True अगर कम से कम एक इनपुट वैल्यू सही है, तो None यदि सभी मान शून्य हैं या यदि कोई वैल्यू नहीं है, तो False

JSONBAgg

class JSONBAgg(expressions, filter=None, **extra) [source]

JSON सरणी के रूप में इनपुट मान लौटाता है। PostgreSQL ≥ 9.5 की आवश्यकता है।

StringAgg

class StringAgg(expression, delimiter, distinct=False, filter=None) [source]

एक स्ट्रिंग में समाप्‍त इनपुट मान लौटाता है, जिसे delimiter स्ट्रिंग द्वारा अलग किया जाता delimiter

delimiter

आवश्यक तर्क। एक तार होने की जरूरत है।

distinct

एक वैकल्पिक बूलियन तर्क जो यह निर्धारित करता है कि समवर्ती मान अलग-अलग होंगे। False करने के लिए चूक।

आँकड़ों के लिए कार्य करना

y और x

इन सभी कार्यों के लिए तर्क y और x एक क्षेत्र या एक संख्यात्मक डेटा लौटाने वाली अभिव्यक्ति का नाम हो सकते हैं। दोनों की आवश्यकता है।

Corr

class Corr(y, x, filter=None) [source]

यदि कोई मिलान पंक्तियाँ नहीं हैं, तो float रूप में सहसंबंध गुणांक लौटाता है, या None भी नहीं।

CovarPop

class CovarPop(y, x, sample=False, filter=None) [source]

लौकिक के रूप में जनसंख्या सहसंयोजक लौटाता है, या None अगर कोई मेल पंक्तियों नहीं हैं।

एक वैकल्पिक तर्क है:

sample

डिफ़ॉल्ट रूप से CovarPop सामान्य जनसंख्या CovarPop लौटाता है। हालांकि, यदि sample=True , तो वापसी मूल्य नमूना जनसंख्या सहसंयोजक होगा।

RegrAvgX

class RegrAvgX(y, x, filter=None) [source]

स्वतंत्र चर ( sum(x)/N ) के औसत को float रूप में लौटाता है, या यदि None भी मेल नहीं खाता है।

RegrAvgY

class RegrAvgY(y, x, filter=None) [source]

एक float रूप में आश्रित चर ( sum(y)/N ) के औसत को लौटाता है, या यदि None भी मेल नहीं खाता है।

RegrCount

class RegrCount(y, x, filter=None) [source]

इनपुट पंक्तियों की संख्या का एक int देता है जिसमें दोनों अभिव्यक्तियाँ शून्य नहीं हैं।

RegrIntercept

class RegrIntercept(y, x, filter=None) [source]

(x, y) जोड़े द्वारा float रूप में निर्धारित किए गए न्यूनतम-वर्ग-फिट रैखिक समीकरण के y- अवरोधन को लौटाता है, या यदि कोई मिलान पंक्तियाँ नहीं हैं, तो None नहीं।

RegrR2

class RegrR2(y, x, filter=None) [source]

एक float रूप में सहसंबंध गुणांक के वर्ग को लौटाता है, या None अगर कोई मेल पंक्तियाँ नहीं हैं।

RegrSlope

class RegrSlope(y, x, filter=None) [source]

(x, y) युग्मों द्वारा निर्धारित न्यूनतम-वर्गों-फिट रैखिक समीकरण की ढलान को float रूप में लौटाता है, या यदि कोई मेल नहीं खाता है।

RegrSXX

class RegrSXX(y, x, filter=None) [source]

रिटर्न sum(x^2) - sum(x)^2/N (स्वतंत्र चर के "वर्गों का योग") एक float रूप में, या None यदि कोई मेल पंक्तियाँ नहीं हैं।

RegrSXY

class RegrSXY(y, x, filter=None) [source]

रिटर्न sum(x*y) - sum(x) * sum(y)/N ("स्वतंत्र समय निर्भर चर के उत्पादों की राशि") एक float रूप में, या None अगर कोई मिलान पंक्तियाँ नहीं हैं।

RegrSYY

class RegrSYY(y, x, filter=None) [source]

रिटर्न sum(y^2) - sum(y)^2/N (आश्रित चर के "वर्गों का योग") एक float रूप में, या None अगर कोई मेल पंक्तियाँ नहीं हैं।

उपयोग के उदाहरण

हम इस उदाहरण तालिका का उपयोग करेंगे:

| FIELD1 | FIELD2 | FIELD3 |
|--------|--------|--------|
|    foo |      1 |     13 |
|    bar |      2 | (null) |
|   test |      3 |     13 |

यहां कुछ सामान्य-उद्देश्य एकत्रीकरण कार्यों के कुछ उदाहरण दिए गए हैं:

>>> TestModel.objects.aggregate(result=StringAgg('field1', delimiter=';'))
{'result': 'foo;bar;test'}
>>> TestModel.objects.aggregate(result=ArrayAgg('field2'))
{'result': [1, 2, 3]}
>>> TestModel.objects.aggregate(result=ArrayAgg('field1'))
{'result': ['foo', 'bar', 'test']}

अगला उदाहरण सांख्यिकीय कुल कार्यों का उपयोग दर्शाता है। अंतर्निहित गणित का वर्णन नहीं किया जाएगा (आप इस बारे में पढ़ सकते हैं, उदाहरण के लिए, wikipedia ):

>>> TestModel.objects.aggregate(count=RegrCount(y='field3', x='field2'))
{'count': 2}
>>> TestModel.objects.aggregate(avgx=RegrAvgX(y='field3', x='field2'),
...                             avgy=RegrAvgY(y='field3', x='field2'))
{'avgx': 2, 'avgy': 13}