मैं स्नोफ्लेक में कुछ 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",
0
CraftyRob 25 सितंबर 2020, 06:01

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"                 |
+-----------------------------+
3
Gokhan Atil 25 सितंबर 2020, 16:16

वे वर्गाकार कोष्ठक इंगित करते हैं कि आपके FULLFILLMENTS फ़ील्ड में JSON ऑब्जेक्ट की एक सरणी है। जब तक एक क्षेत्र में वस्तुओं की एक सरणी रखने की वास्तविक आवश्यकता न हो, आपको COPY कमांड की STRIP_OUTER_ARRAY संपत्ति पर एक नज़र डालनी चाहिए। एक उदाहरण यहां पाया जा सकता है स्नोफ्लेक प्रलेखन में:

copy into <table>
from @~/<file>.json
file_format = (type = 'JSON' strip_outer_array = true);
0
SimonD 25 सितंबर 2020, 11:27