Databricks/Spark SQL - как получить данные в поле типа карты
В пакете данных CDP в таблице профилей есть поле identityMap:
[IdentityType -> IdentityValue]
Примерное значение выглядит следующим образом:
["crmID" -> "{(NULL,crm123,NULL)}",
"loyaltyID" -> "{(NULL,loy456,NULL)}",
"accountID" -> "{(NULL,act789,NULL)}"]
Чтобы проверить процесс приема и слияния идентификаторов, клиент хотел бы выполнить некоторые проверки в этом поле карты, например:
- Сколько ключей для каждой строки
- Сколько значений для каждого ключа
Раньше я хорошо разбирался в TSQL, но структура этих карт для меня нова, и я не знаю, как исследовать эти данные.
Какие функции или синтаксис можно использовать для получения поля identityMap? Не стесняйтесь делиться только ссылками на общедоступную документацию.
1 ответ
Если вам нужно сделать это только с помощью SQL, вам нужно использовать квадратные скобки
[]
для доступа к значениям (см. документы ). Они работают как с массивами, так и с картами, только для массивов вам нужно указать индекс, а для карт вам нужно указать значение, например,
column_name['crmID']
.
PS Вам также может понадобиться использовать такие функции, как
map_keys
,
map_values
и т. д. - просто перейдите по ссылкам внизу связанной страницы