次のような JSON オブジェクトがあります。
{ 「名前」:「ベーコン」 "カテゴリ":["食べ物","肉","良い"] 「カロリー」:「すごい」 }
それを一意の値の配列にフラット化しようとしています。クロス集計データまたは JSON データを直接操作できない Tableau 用のファクト テーブルを作成する必要があります。
これを Python で行うか Ruby で行うかについてはこだわりませんが、これまでのところ、Ruby で行うように努めてきました。JSON を簡単に解析し、そこから Ruby ハッシュを取得できます。これは、最初に行うのが正しいように思えます。
{"名前"=>"ベーコン", "カテゴリー"=>["食品", "肉", "良い"], "カロリー" => "巨大"}
そして、私はこれを生成する必要があります:
name,category,calories
bacon,food,huge
bacon,meat,huge
bacon,good,huge
したがって、そのハッシュをループして、ネストを解除する必要があると思います。私はこのようなことを実験してきました:
def Flatten(inHash)
inHash.each do |key,value|
if value.kind_of?(Hash)
Flatten(value)
else
puts "#{value}"
end
end
end
しかし、それはすべての値を出力しているように見えますが、前の値を繰り返しません。だから私は次のような出力を得る
bacon
food
meat
good
huge
これを行う組み込みのメソッド、gem、またはライブラリはありますか、それともゼロから構築することを検討していますか? 必要な出力を取得する方法についてのアイデアはありますか? 私は Ruby と Python を話すので、Python の回答があれば共有してください。