Если вы вводите ВСЕГДА в этой форме (два элемента в массиве с одинаковыми полями в одном и том же элементе), вы можете объединить функцию PARSE_JSON и путь доступа .
Просто попробуйте это:
with input as (
select parse_json(
'{"custom": [ { "name": "addressIdNum", "valueNum": 12345678}, {"name": "cancelledDateAt", "valueAt": "2017-02-30T01:43:04.000Z" }] }')
as json)
select json:custom[0].valueNum::integer, json:custom[1].valueAt::timestamp from input;
----------------------------------+-----------------------------------+
JSON:CUSTOM[0].VALUENUM::INTEGER | JSON:CUSTOM[1].VALUEAT::TIMESTAMP |
----------------------------------+-----------------------------------+
12345678 | 2017-03-01 17:43:04 |
----------------------------------+-----------------------------------+
Однако, если структура ваших данных может отличаться (например, элементы в массиве могут быть в другом порядке), вероятно, лучше написать JavaScript UDF в Snowflake, чтобы преобразовать такие грязные данные во что-то более простое.