2016-04-21 23 views
-1
{ 
    "business_id": "SQ0j7bgSTazkVQlF5AnqyQ", 
    "full_address": "214 E Main St\nCarnegie\nCarnegie, PA 15106", 
    "hours": {}, 
    "open": true, 
    ** "categories": ["Chinese", "Restaurants"] ** , 
    "city": "Carnegie", 
    "review_count": 9, 
    "name": "Don Don Chinese Restaurant", 
    "neighborhoods": ["Carnegie"], 
    "longitude": -80.0849615, 
    "state": "PA", 
    "stars": 2.5, 
    "latitude": 40.4083473, 
    "attributes": { 
     "Take-out": true, 
     "Alcohol": "none", 
     "Noise Level": "quiet", 
     "Parking": { 
      "garage": false, 
      "street": false, 
      "validated": false, 
      "lot": false, 
      "valet": false 
     }, 
     "Delivery": true, 
     "Has TV": true, 
     "Outdoor Seating": false, 
     "Attire": "casual", 
     "Waiter Service": false, 
     "Accepts Credit Cards": true, 
     "Good for Kids": true, 
     "Good For Groups": false, 
     "Price Range": 1 
    }, 
    "type": "business" 
} 

value.parseJson()['categories']で唯一の特定のJSON要素を保存し、それがフィルタリングのみ値として'chinese'を維持し、他の値を削除することは可能でしょうか?はどのようOpenRefineで<code>'categories'</code>と呼ばれる新しい列を作成する新しいOpenRefine列

+0

リストの最初の値を保持する(この場合は '中国語') ;または、配列から特定の単語を選択します(この場合、単語は '中国語'になります)。または、他の何か –

答えて

0

上記の例では、GREL式:2つの値を含む配列で

value.parseJson()['categories'] 

結果:

["Chinese", "Restaurants"] 

あなたは配列に作用GREL式でこれを操作することができます。例えば、配列内の最初の値を選択するためにあなたが使用することができます内の他のエントリを選択するために、配列の最初のエントリ(式の最後に角括弧内の数字を増やしを選択することになる

value.parseJson()['categories'][0] 

配列)

あなたは、アレイ内の特定の値でフィルタしたい場合は、「フィルタ」式を使用することができます。

filter(value.parseJson()['categories'],v,v=="Chinese") 

これはその中の唯一の単語「中国」を使用して新しい配列につながります(上記の例では)。新しい列でこれを格納するには、文字列に配列を変換する必要があります。

​​

は、大文字と小文字の区別の問題を避けるために、と「中国」「カテゴリ」アレイ内で複数回出現する可能性、私は小文字に値を変換したい最初の文字列に変換する前に、アレイを重複除外 - あなたがで終わるので:必要が配列のカテゴリーから「中国」を選択する場合は、明確にすることができ

filter(forEach(value.parseJson()["categories"],v,v.toLowercase()),w,w=="chinese").uniques().join("") 
関連する問題