मैं स्नोफ्लेक में कुछ JSON फ़ाइलों को पार्स करने का प्रयास कर रहा हूं। इस मामले में, मैं उस लाइन से "गिफ्ट कार्ड" निकालना चाहता हूं जिसमें "fulfillment_service": "gift_card" है। मुझे एक आयामी JSON डेटा को क्वेरी करने में सफलता मिली है, लेकिन यह - वर्ग कोष्ठक के साथ - मुझे भ्रमित कर रहा है।
यहाँ मेरी सरल क्वेरी है - मैंने "TEST_WEEK" नामक एक छोटी तालिका बनाई है
select line_items:fulfillment_service
from TEST_WEEK
, lateral flatten(FULFILLMENTS:line_items) line_items;
उम्मीद है कि यह बहुत बुनियादी सवाल नहीं है। मैं JSON को पार्स करने के साथ बहुत नया हूँ।
अग्रिम में धन्यवाद!
मैं जिस जानकारी को प्राप्त करना चाहता हूं, उसके साथ पूर्ति फ़ील्ड की शुरुआत यहां दी गई है।
[
{
"admin_graphql_api_id": "gid://shopify/Fulfillment/2191015870515",
"created_at": "2020-08-10T14:54:38Z",
"id": 2191015870515,
"line_items": [
{
"admin_graphql_api_id": "gid://shopify/LineItem/5050604355635",
"discount_allocations": [],
"fulfillable_quantity": 0,
"fulfillment_service": "gift_card",
"fulfillment_status": "fulfilled",
"gift_card": true,
"grams": 0,
"id": 5050604355635,
"name": "Gift Card - $100.00",
"origin_location": {
"address1": "100 Indian Road",
"address2": "",
"city": "Toronto",
"country_code": "CA",
2 जवाब
हो सकता है कि आप line_items सरणी में मानों को संसाधित करने के लिए दो पार्श्व फ़्लैटन का उपयोग कर सकते हैं:
नमूना तालिका:
create table TEST_WEEK( FULFILLMENTS variant ) as
select parse_json(
'[
{
"admin_graphql_api_id": "gid://shopify/Fulfillment/2191015870515",
"created_at": "2020-08-10T14:54:38Z",
"id": 2191015870515,
"line_items": [
{
"admin_graphql_api_id": "gid://shopify/LineItem/5050604355635",
"discount_allocations": [],
"fulfillable_quantity": 0,
"fulfillment_service": "gift_card",
"fulfillment_status": "fulfilled",
"gift_card": true,
"grams": 0,
"id": 5050604355635,
"name": "Gift Card - $100.00",
"origin_location": {
"address1": "100 Indian Road",
"address2": "",
"city": "Toronto",
"country_code": "CA"
}
}
]
}
]');
नमूना क्वेरी:
select s.VALUE:fulfillment_service
from TEST_WEEK,
lateral flatten( FULFILLMENTS ) f,
lateral flatten( f.VALUE:line_items ) s;
उत्पादन:
+-----------------------------+
| S.VALUE:FULFILLMENT_SERVICE |
+-----------------------------+
| "gift_card" |
+-----------------------------+
वे वर्गाकार कोष्ठक इंगित करते हैं कि आपके FULLFILLMENTS
फ़ील्ड में JSON ऑब्जेक्ट की एक सरणी है। जब तक एक क्षेत्र में वस्तुओं की एक सरणी रखने की वास्तविक आवश्यकता न हो, आपको COPY
कमांड की STRIP_OUTER_ARRAY
संपत्ति पर एक नज़र डालनी चाहिए। एक उदाहरण यहां पाया जा सकता है स्नोफ्लेक प्रलेखन में:
copy into <table>
from @~/<file>.json
file_format = (type = 'JSON' strip_outer_array = true);
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।