左联接在Azure流分析中无法正常工作

时间:2019-12-29 20:56:35

标签: azure-stream-analytics

我正在尝试在两个输入(事件中心)之间创建一个简单的左联接,输入的来源是一个应用函数,该函数处理Rabbitmq队列并发送到事件中心。

在我的eventhub1中,我有以下数据:

GetOrCreateDMChannelAsync

在我的eventhub2中,我有以下数据:

[{
    "user": "user_aa_1"
}, {
    "user": "user_aa_2"
}, {
    "user": "user_aa_3"
}, {
    "user": "user_cc_1"
}]

我使用该sql创建左联接

[{
    "user": "user_bb_1"
}, {
    "user": "user_bb_2"
}, {
    "user": "user_bb_3
}, {
    "user": "user_cc_1"
}]

测试结果看起来还可以...

test result

问题是当我在作业运行中尝试...我在power bi数据集中得到了这个结果...

power bi result

有人知道为什么我的左边不能像任何SQL查询一样工作吗?

2 个答案:

答案 0 :(得分:0)

我测试了您的查询sql,它也对我也很好。因此,当您在执行ASA作业后无法获得预期的输出时,建议您按照此document中的解决方案进行故障排除。

根据您的输出,看来HUB2成为了左表。您可以在ASA中使用diagnostic log来查找作业执行的真正输出。

答案 1 :(得分:0)

我使用blob存储对输入1和2进行了端到端测试,并将您的样本和PowerBI数据集作为输出,并观察了预期的结果。

我认为您的查询可能会出错:

首先,您的联接有一个5小时的窗口:基本上,这意味着它将在那个大窗口中查看EH1和EH2的匹配情况,因此实时结果将与只有1行的示例输入有所不同。您可以确认在这5个小时内没有比赛吗?

此外,默认情况下,PBI流数据集是“混合数据集”,因此由于您的输出模式中没有时间戳,因此它会累积结果,而又不知道何时发出结果。因此,您也可以在此处查看以前的数据。我在这里建议几件事:

  • 在Power BI中,更改数据集的选项:禁用“历史数据分析”以删除数据缓存
  • 添加一个timestamp列以确保标识何时生成数据(查询的第一行将变为:选择System.timestamp()作为时间,hub1。[user] h1,hub2。[user] h2)

让我知道它是否对您有用。

谢谢

JS(Azure流分析)