【发布时间】:2021-11-15 13:34:08
【问题描述】:
我正在使用 Azure 事件中心从多个源捕获数据并将其发送到 Azure 流分析。这些来源有一些共同的数据点。 例如:
- 来源 1:PNR 编号
- 来源 2:PNR 编号
如何识别这些多个数据集中的共同数据?
【问题讨论】:
标签: azure azure-eventhub azure-stream-analytics
我正在使用 Azure 事件中心从多个源捕获数据并将其发送到 Azure 流分析。这些来源有一些共同的数据点。 例如:
如何识别这些多个数据集中的共同数据?
【问题讨论】:
标签: azure azure-eventhub azure-stream-analytics
我了解多个源被提取到一个事件中心?我想有一个字段 SourceId 可以识别数据点的来源?
如果是这种情况,您可以使用Common Table Expressions (WITH) 来确定这些来源的范围,并在它们之间使用join。
WITH
SourceA AS (
SELECT * FROM Input WHERE SourceId = 'A'
),
SourceB AS (
SELECT * FROM Input WHERE SourceId = 'B'
)
SELECT
A.*,
B.*
FROM A
LEFT JOIN B
ON A.[Pnr NO] = B.[Pnr NO]
AND DATEDIFF(second,A,B) BETWEEN 0 AND 60
请注意,这不是通用模式。它解决了一个特定的业务问题,我们需要在 B (FROM A LEFT JOIN B) 中为 A 找到匹配事件,这将在接下来的 60 秒 (DATEDIFF(second,A,B) BETWEEN 0 AND 60) 内发生。
有lots of different patterns 可以在此处应用,具体取决于您要构建的特定场景。对于某些人来说,应该使用分析函数(如last)而不是联接。
如果您详细说明您的需求,我或许能够找到合适的模式。
【讨论】: