перебирая строку в SQL, чтобы найти все вхождения значения и суммировать их, основываясь на определенном условии - PullRequest
0 голосов
/ 04 января 2019

У меня немного проблемы с SQL / Hive.

В БД мы получаем вывод нашего XML, как показано ниже. Который включает в себя имя и значение XML-записей.

Значение, которое я запрашиваю, будет выглядеть так:

rollover\5000,another\10000, rollover\1000, BillingTimeStamp\2017-06-15T01:00:05,timereset\2017-05-26T14:32:51

который получен из дерева XML, которое будет выглядеть примерно так:

<property>
   <name>rollover</name>
   <value>5000</name>
</property>
<property>
   <name>another</name>
   <value>5000</name>
</property>
<property>
   <name>rollover</name>
   <value>7000</name>
</property>

...

Итак, мне нужно запросить и сказать: Если эта строка содержит слово rollover, суммируйте значение. Проблема в том, что термин ролловер может появляться несколько раз с несколькими значениями.

'Строки' разделены, а столбцы \

Таким образом, вывод, если я разделю запятую, будет:

rollover\5000
another\5000
rollover\7000
...

Может кто-нибудь посоветовать, с чего бы мне начать? Я пробовал несколько строковых функций и принимал значение между \ и запятой, но я не знаю, как перебрать строку, чтобы найти все вхождения.

Любая помощь будет потрясающей!

SELECT
    CASE
        WHEN "rollover" in "rollover\5000,another\5000, rollover\7000, BillingTimeStamp\2017-06-15,timereset\2017-05-26" 
            THEN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...