如何使用基于分区键的 Azure 流分析查询数据

Posted

技术标签:

【中文标题】如何使用基于分区键的 Azure 流分析查询数据【英文标题】:How query data with azure stream analytics based on partition key 【发布时间】:2019-09-27 09:20:35 【问题描述】:

我正在按照以下格式将数据发送到流媒体。

[
  
    "body":
        "indice":"NIFTY 50",
        "advances":"13"
    ,
    "applicationProperties":
        "id":3
    ,
    "partitionKey":"pk788",
    "EventProcessedUtcTime":"2019-09-27T09:11:18.4997132Z",
    "PartitionId":1,
    "EventEnqueuedUtcTime":"2019-09-27T09:11:10.3310000Z"
  ,
  
    "body":
        "symbol":"BAJFINANCE",
        "tradedQuantity":"16,00,866"
    ,
    "applicationProperties":
        "id":2
    ,
    "partitionKey":"pk787",
    "EventProcessedUtcTime":"2019-09-27T09:11:18.4997132Z",
    "PartitionId":1,
    "EventEnqueuedUtcTime":"2019-09-27T09:11:10.3310000Z"
  
]

我尝试使用以下查询查询此数据的位置

Select * from NSEStockInput
where partitionKey = 'pk788' 

我收到如下错误 发生了意外错误。请打开支持票以调查并提供以下客户端请求 ID:未定义 如何解决这个问题

【问题讨论】:

您应该通过如下工具运行您发送的有效负载:jsonlint.com 以确保 json 有效。 【参考方案1】:

看起来您的示例不是有效的 Json。您能否尝试删除第二个“body”属性旁边的“[”。

【讨论】:

JSON 有效负载实际上似乎有很多问题,您可以修改此答案以解决其余问题吗?【参考方案2】:

通过更正 JSON 语法错误,我得到了消息格式:

[
    
        "body":
            "indice":"NIFTY 50",
            "advances":"13"
        ,
        "applicationProperties":
            "id":3
        ,
        "partitionKey":"pk788",
        "EventProcessedUtcTime":"2019-09-27T09:11:18.4997132Z",
        "PartitionId":1,
        "EventEnqueuedUtcTime":"2019-09-27T09:11:10.3310000Z"
    ,
    
        "body":
            "symbol":"BAJFINANCE",
            "tradedQuantity":"16,00,866"
        ,
        "applicationProperties":
            "id":2
        ,
        "partitionKey":"pk787",
        "EventProcessedUtcTime":"2019-09-27T09:11:18.4997132Z",
        "PartitionId":1,
        "EventEnqueuedUtcTime":"2019-09-27T09:11:10.3310000Z"
    
]

您可以使用以下查询来提取 partitionKey:

with inputStream as (select input.* from input)


SELECT *
INTO Output
FROM inputStream
WHERE partitionKey = 'pk788'

【讨论】:

以上是关于如何使用基于分区键的 Azure 流分析查询数据的主要内容,如果未能解决你的问题,请参考以下文章

Azure 流分析分区键列在表存储中重复

在 Azure 流分析查询中同时使用数组和记录类型

如何使用 azure 流分析根据输出/blob 存储中的数据仅插入不同的行?

一个具有许多分区键的 Azure 表存储表与许多具有较少分区键的表相比如何?

Azure 流分析中组合键的引用联接

在使用 Tumbling Window 的 azure 流分析中,如何处理前一小时的数据