在SQL中的字符串上进行迭代以查找值的所有出现并根据特定条件对其求和

时间:2019-01-04 14:18:48

标签: hive hiveql

我有一些SQL / Hive挑战。

在数据库中,我们收到XML的输出,如下所示。其中包括XML记录的名称和值。

我要查询的值将如下所示:

    [FunctionName("FunctionTest")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [ServiceBus(queueOrTopicName:"queueName",Connection ="ServiceBusConnection")]IAsyncCollector<Message> outputMessages,
        ILogger log)
    {
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var message = new Message
            {
                Body = System.Text.Encoding.UTF8.GetBytes(requestBody),
                MessageId = "MyMessageId"
            };
            await outputMessages.AddAsync(message);
    }

这是从XML树派生出来的,看起来像这样:

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

...

因此,我需要查询并说: 如果此字符串包含单词翻转,则求和。问题在于,术语“翻滚”可能会出现多次,并带有多个值。

“行”由分隔,列由\

分隔

所以如果我用逗号分割,输出将是:

<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\5000
another\5000
rollover\7000
...

0 个答案:

没有答案