在 Azure 流分析中加入
JOIN in Azure Stream Analytics
我需要在流分析中使用主数据验证一列的值。
我已经编写了从 blob 位置获取一些数据的查询,其中一个列值应该根据另一个 blob 位置中可用的主数据进行验证。
下面是我试过的SAQL。 signals1是blob中的主数据,signals2是处理待验证的数据:
WITH MASTER AS (
SELECT [signals1].VAL as VAL
FROM [signals1]
)
SELECT
ID,
VAL,
SIG
INTO [output]
FROM signals2
我必须检查 signals2 中的 VAL,以便根据 signals1 中的 VAL 进行验证。
如果signals2中的VAL存在于signals1中,那么我们应该写入输出。
如果 signals2 中的 VAL 在 signals1 中不存在,则应忽略该文档(不应写入输出)。
我尝试使用 JOIN 和 WHERE 子句,但没有按预期工作。
任何线索,如何使用 JOIN 或 WHERE 实现此目的?
如果您的 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 是流数据,则不能使用此连接。这些类型的连接的工作方式是您必须使用时间窗口。没有它是不可能的。
我需要在流分析中使用主数据验证一列的值。
我已经编写了从 blob 位置获取一些数据的查询,其中一个列值应该根据另一个 blob 位置中可用的主数据进行验证。
下面是我试过的SAQL。 signals1是blob中的主数据,signals2是处理待验证的数据:
WITH MASTER AS (
SELECT [signals1].VAL as VAL
FROM [signals1]
)
SELECT
ID,
VAL,
SIG
INTO [output]
FROM signals2
我必须检查 signals2 中的 VAL,以便根据 signals1 中的 VAL 进行验证。
如果signals2中的VAL存在于signals1中,那么我们应该写入输出。 如果 signals2 中的 VAL 在 signals1 中不存在,则应忽略该文档(不应写入输出)。
我尝试使用 JOIN 和 WHERE 子句,但没有按预期工作。 任何线索,如何使用 JOIN 或 WHERE 实现此目的?
如果您的 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 是流数据,则不能使用此连接。这些类型的连接的工作方式是您必须使用时间窗口。没有它是不可能的。