पंक्ति_संख्या गणना को लपेटने के लिए सबक्वायरी का उपयोग करें, फिर विभाजित कॉलम में व्युत्पन्न कॉलम का उपयोग करें।
--query "select col1, ... colN, RANGEGROUP
from (select t.*, row_number() OVER (order by t.item_id ) AS RANGEGROUP
from table t ) s
where 1=1 and \$CONDITIONS"
row_number
नियतात्मक होना चाहिए, इसका मतलब है कि जब कई बार निष्पादित किया जाता है, तो उसे सभी पंक्तियों के लिए समान संख्या निर्दिष्ट करनी चाहिए। क्या हो सकता है यदि OVER में ORDER BY में अद्वितीय कॉलम या संयोजन न हो:row_number
एक ही पंक्तियों के लिए अलग-अलग नंबर लौटा सकते हैं। और यदि आप इसे स्प्लिट-बाय में उपयोग कर रहे हैं, तो आपको डुप्लिकेशन मिलेगा क्योंकि एक ही पंक्ति स्प्लिट रेंज 1 में हो सकती है, 1-100 कहें, मैपर 2 में स्कूप रेंज 2 के लिए फ़िल्टर के साथ एक ही क्वेरी निष्पादित करेगा, कहें (101-200) ) वही पंक्ति उस श्रेणी में भी दिखाई दे सकती है। समानांतर में स्प्लिट रेंज प्राप्त करने के लिए स्कूप अलग-अलग कंटेनरों (मैपर) में एक ही क्वेरी को अलग-अलग कंडीशन के साथ चलाता है।
यदि Id int है (और समान रूप से वितरित होने पर बहुत बेहतर है), तो उस ID का उपयोग करें। आपको STRING कॉलम होने पर row_number की आवश्यकता क्यों हो सकती है। इसे पढ़ें:https://stackoverflow.com/a/37389134/2700344 , स्प्लिट-कॉलम जरूरी नहीं कि एक PK हो