Azure Stream Analytics中的JOIN

问题描述 投票:0回答:1

我需要在流分析中使用主数据来验证一列的值。

我编写了查询以从Blob位置获取一些数据,并且应该对照另一个Blob位置中可用的主数据验证列值之一。

下面是我尝试过的SAQL。 signals1是blob中的主数据,signals2是已处理并要验证的数据:

WITH MASTER AS (
SELECT [signals1].VAL as VAL
FROM [signals1]
)

SELECT 
    ID,
    VAL,
    SIG
INTO [output]
FROM signals2

我必须从signal2中检查VAL,以针对signal1中的VAL进行验证。

如果信号1中的信号2中的VAL,那么我们应该写输出。如果信号1中的VAL没有在信号1中,则该文档应被忽略(不应写入输出)。

我尝试使用JOIN和WHERE子句,但未按预期工作。任何潜在客户,如何使用JOIN或WHERE实现这一目标?

azure azure-cosmosdb azure-stream-analytics
1个回答
0
投票

如果Signal1数据是参考输入,而Signal2是流输入,则可以使用以下查询:

with signals as (select * from Signal2 I join Signal1 R ON I.Val = R.Val)

select * into output from signals

我在本地测试了此查询,并假设您的参考数据(Signal1)的格式为:

[
    {
       "Val":"123",
       "Data":"temp"
    },
    {
       "Val":"321",
       "Data":"humidity"
    }
]

例如,您的Signal2-流输入是:

{
   "Val":"123",
   "SIG":"k8s23kk",
   "ID":"1234589"
}

查看此查询和数据示例,看它是否可以指导您解决问题。

旁注如果Signal1是流数据,则不能使用此联接。这些类型的联接的工作方式是必须使用时间窗口。没有它是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.