Запрос на обнаружение данных Athena / Presto, чтобы рекомендовать схему JSON?

У меня есть таблица Афины (raw) только с одним столбцом (json).

У меня есть следующий запрос, который выводит частоты ключей json:

SELECT key, count(*)
FROM (
  SELECT map_keys(cast(json_parse(json) AS map(varchar, json))) AS keys
  FROM raw
)
CROSS JOIN UNNEST (keys) AS t (key)
GROUP BY key

Как я могу расширить этот запрос, чтобы он сообщал мне, имеет ли конкретный ключ значения с любыми нечисловыми символами?

[неудачные попытки удалены после того, как я нашел ответ]


person Alex R    schedule 03.11.2018    source источник


Ответы (1)


Это работает:

SELECT k, count(*) as isPresent, sum(isNumber) as isNumber, 
          count(*)-sum(isNumber) as notIsNumber from (
               with dataset as (SELECT 
                   cast(json_parse(json) AS map(varchar, varchar)) as kv FROM raw)
               SELECT t.k, t.v, 
                      IF(TRY(cast(t.v as double)) is null, 0, 1) as isNumber 
               from dataset cross join unnest(kv) as t(k, v)
) group by k
person Alex R    schedule 03.11.2018