Пользовательское преобразование не применяется в обработчике данных в Google Cloud Data Fusion

Я пытаюсь выполнить настраиваемое преобразование в обработчике в Google Cloud Data Fusion.

set-column column (parse-as-json :column 2 ) ? column =^ "[" : (parse-as-json :column 1 )

Я хочу проанализировать столбец как JSON до глубины 2, если это массив, что означает, если он начинается с квадратной скобки ([), в противном случае до глубины 1. Я не уверен, что двоеточие в директиве parse-as-json вызывает вопрос здесь.

Если я изменю его на следующее, он будет работать нормально: -

set-column column 'a' ? column =^ "[" : 'b'

Я также пробовал экранировать двоеточие в директиве parse-as-json с помощью обратной косой черты, но это не помогло. Что я здесь делаю не так? Пожалуйста, предложите.


person Sumit Desai    schedule 18.07.2020    source источник


Ответы (1)


В настоящее время мы не поддерживаем вложенные директивы (например, set-column с parse-as-json).

Вы можете попробовать сначала сделать копию столбца, затем проанализировать одну копию с глубиной 1 и проанализировать клон с глубиной 2. Затем, наконец, вы можете использовать set-column для выбора правильного столбца.

Например, если предположить, что исходный столбец называется 'body', а глубина 2 даст значение null, если оно не начинается с [, вы можете сделать что-то вроде этого:

copy body body_clone
parse-as-json body 1
parse-as-json body_clone 2
set-column final_result !body_clone_field ? body_field : body_clone_field
person Edwin Elia    schedule 21.07.2020