Azure 流分析 - 跨多个数据集识别公共数据
Azure Stream Analytics - Identify common data across the multiple data sets
我正在使用 Azure 事件中心从多个源捕获数据并发送到 Azure 流分析。这些来源有一些共同的数据点。
例如:
- 来源 1:PNR 编号
- 来源 2:PNR 编号
如何识别这些多个数据集中的公共数据?
我了解在单个事件中心中摄取多个源?我想有一个 SourceId 字段可以识别数据点的来源?
如果是这样,你可以在它们之间使用Common Table Expressions (WITH) to scope these sources, and 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 to apply here depending on the specific scenario you are building for. For some, analytics functions (like last) 而不是联接。
如果你详细说明你的需要,我也许能找到合适的模式。
我正在使用 Azure 事件中心从多个源捕获数据并发送到 Azure 流分析。这些来源有一些共同的数据点。 例如:
- 来源 1:PNR 编号
- 来源 2:PNR 编号
如何识别这些多个数据集中的公共数据?
我了解在单个事件中心中摄取多个源?我想有一个 SourceId 字段可以识别数据点的来源?
如果是这样,你可以在它们之间使用Common Table Expressions (WITH) to scope these sources, and 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 to apply here depending on the specific scenario you are building for. For some, analytics functions (like last) 而不是联接。
如果你详细说明你的需要,我也许能找到合适的模式。