0
I持つJSON欄のようなj
:プレストからエキス、すべてのJSONのキー
{'a': 2, 'b': {'b1': 3, 'b2': 5}}
{'c': 3, 'a': 5}
{'d': 1, 'c': 7}
どのように私はすべての異なる(トップレベル)を取得することができますキーの名前?私。私は
['a', 'b', 'c', 'd']
を返すために、
select distinct foo(j)
のようなもの(この例では、私は、ネストされたキーを使用して、あまりにも心配していないんだということに注意してください)
Presto documentation明示的にフィットする任意の機能を持っていません請求書。近くに見えるのはJSONPathの構文ですが、これは不正確なようです。以下の少なくとも1 何かを返しますが、すべては私のためプレストに失敗しなければならない。さらに
select json_extract(j, '$.*')
select json_extract(j, '$..*')
select json_extract(j, '$[*]')
select json_extract(j, '*')
select json_extract(j, '..*')
select json_extract(j, '$*.*')
、私はこれはj
(すなわち、[2, 3, 5, 3, 5, 1, 7]
)から、キー、値をしませ返します疑います。
Anはあなたの列が ' '{ "A" のようなvarchar''として格納されている場合という条件を追加しました: "B"、2:{ "B1":3 (JSONとしてのjson_column) ' – MichaelChirico
' CROSS(json_column) 'がなければこれを行う方法はありますか? JOIN'? 10億行以上のDBでは、これは非常に遅いです。 – MichaelChirico
私のアプローチは次のとおりです。私が実行できるデータの十分な小さな部分を拡大します(700万行のように36個のユニークキーが見つかりました)。より広いクエリに 'key_found_from_narrow_query'句を 'どこにもない'句を追加します。 1)これは、実際には、データセット全体で一意のキーを見つけるより優れたアプローチです2)これをスケールで実装するためのより良い/少ない反復方法がありますか? – MichaelChirico