我需要在流分析中使用主数据验证一列的值。
我编写了查询,以从Blob位置获取一些数据,并且应该对照另一个Blob位置中可用的主数据验证列值之一。
下面是我尝试过的SAQL。 signals1 是blob中的主数据,而 signals2 是已处理并要验证的数据:
WITH MASTER AS (
SELECT [signals1].VAL as VAL
FROM [signals1]
)
SELECT
ID,
VAL,
SIG
INTO [output]
FROM signals2
我必须检查信号2中的 VAL ,以针对信号1中的 VAL 进行验证。
如果信号2中的VAL在信号1中,那么我们应该写入输出。 如果信号1中的VAL不在信号1中,则该文档应被忽略(不应写入输出)。
我尝试了JOIN和WHERE子句,但是没有按预期工作。 任何线索,如何使用JOIN或WHERE来实现?
答案 0 :(得分:1)
如果您的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是流数据,则不能使用此联接。这些类型的联接的工作方式是必须使用时间窗口。没有那是不可能的。