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и т. д. - просто перейдите по ссылкам внизу связанной страницы

Другие вопросы по тегам