Azure Stream Analytics中组合键上的引用联接

Azure Stream Analytics中组合键上的引用联接,azure,join,azure-stream-analytics,Azure,Join,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.keepI

我试图根据组合键上的引用表过滤数据。我找到了一个似乎有效的解决方案:

    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
但是如果我这样做,我会得到一个警告,我的查询包含一个没有键选择器的连接,它将被转换为交叉连接

我测试了这个方法,结果似乎是正确的,但我担心以后可能会有副作用,可能是交叉连接。或者我可以忽略这个Azure警告,因为它不适用于我的情况吗?

CONCAT(I.id,,'I.PropertyName)=R.uid不是键选择器,因为等式的左侧是表达式而不是列引用。 因此,这将被转换为交叉连接,然后是一个过滤器,如警告所示

这是一个警告,不影响结果的功能正确性

在执行引用数据联接之前,可以将表达式投影为列,然后它将成为正确的键查找联接。下面是您的示例查询的外观:

    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
当然,子选择也可以放在单独的步骤中。

您确定在Azure Stream Analytics中选择(select)语法有效吗?因为它似乎对我的环境不起作用