如何解决参考加入Azure Stream Analytics中的组合键
我正在尝试根据组合键上的参考表过滤数据。我从根本上找到了一个似乎可行的解决方案:
SELECT
i.id,i.timestamp,i.PropertyName,i.PropertyValue
FROM iothub AS i
LEFT JOIN Reference AS R
ON CONCAT(i.id,'|','i.PropertyName) = R.uid
WHERE R.keepIt = 1
但是,如果执行此操作,则会收到警告,我的查询包含一个没有键选择器的JOIN,它将被转换为CROSS JOIN。
我测试了该方法,它似乎可以产生正确的结果,但是恐怕以后可能通过CROSS JOIN产生副作用。还是我可以忽略此Azure警告,因为它不适用于我的情况?
解决方法
CONCAT(i.id,'|','i.PropertyName) = R.uid
不是键选择器,因为等式的左侧是表达式而不是列引用。
因此,这将被转换为CROSS JOIN,并按照警告提示的顺序过滤。
这是一个警告,并不影响结果的功能正确性。
您可以在进行引用数据联接之前将表达式投影为一列,然后将其作为正确的键查找联接。这是您的示例查询的样子:
SELECT
i.id,i.timestamp,i.PropertyName,i.PropertyValue
FROM (SELECT id,timestamp,PropertyName,PropertyValue,uid = CONCAT(id,PropertyName)
FROM iothub) AS i
LEFT JOIN Reference AS R
ON i.uid = R.uid
WHERE R.keepIt = 1
当然,也可以将子选择置于单独的步骤中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。