2016-10-06 13 views
0

誤った用語を使用すると謝罪してしまいます。 Amazon Redshiftのデータを照会しています。オブジェクト名が変数値の場合、RedshiftでJSON配列を抽出します

以下私が見ているJSONデータの例である:

{ "ID":{ "名前":[ "NAME1"、 "NAME2"、 "NAME3"]

I名前を含むオブジェクトを取得したい(そのうちの最大15個まで可能)。通常、これは問題なく、トリックを行います。

は、私はしかし、この場合には暗礁に当たっています(コラム、「ID」、「名前」)

json_extract_path_text選択します。 "id"は変数番号です...実際には顧客ID番号です。このことは、IDがすべての場合で異なることになるだろうことを意味するので、1つの行が含まれる場合があります:

{「12345」:{「名前」:[「リサ」、「デイブ」、「ショーン」]

を次の行は含まれている場合がありながら:

{ "6789":{ "名前":[ "フィル"、 "ジェニー"]

サポートを赤方偏移JSON機能はワークアウトされていません。パス要素が毎回異なる場合、どのようにして「名前」オブジェクトを取得できますか?

答えて

0

Redshift User Defined Functions(UDFS)を試すことができます。簡単に、簡単にそのような要件のために&を管理してください。 UDFは異なるパラメータをサポートするように洗練される可能性があります&詳細。

CREATE FUNCTION dynamic_json_extract_path_text (txt VARCHAR(20000)) RETURNS VARCHAR(20000) IMMUTABLE AS $$ 
    import json 
    try: 
     data = json.loads(txt) 
     for d in data: 
      return json.dumps(data[d]['names']) 
     return '' 
    except: 
     return '' 
$$ LANGUAGE plpythonu; 
関連する問題