【问题标题】:Stream Analytics Query (Select * into output)(Exclude specific columns)流分析查询(选择 * 进入输出)(排除特定列)
【发布时间】:2019-02-24 21:32:44
【问题描述】:

我有一个类似的查询;

SELECT
*
INTO [documentdb]
FROM
    [iothub] 
TIMESTAMP BY eventenqueuedutctime

我需要使用 * 因为数据是动态的并且没有特定的架构。问题是 Iothub 系统信息数据在此查询中写入 documentdb。有什么办法可以排除iothub系统信息数据?

谢谢。

【问题讨论】:

    标签: azure azure-stream-analytics


    【解决方案1】:

    目前这是不可能的,但在不久的将来,这将在 Job Compatibility Level 1.2 中成为可能。目前,一种解决方法是您可以在 Cosmos DB 中创建一个创建后触发器以从文档中删除此属性。

    【讨论】:

    • 您有任何链接可以了解此功能的外观吗?我在路线图或用户意见中找不到任何关于此类的内容
    【解决方案2】:

    正如@chetangm 在他的回答中所说,目前 ASA 不支持这种过滤机制。是的,您可以在 Cosmos db 中使用 create trigger,但是它需要在 sdk 代码或 REST API 中触发。它不会自动触发。

    我为您提供了另一种使用Azure Function Cosmos DB Triggered 的解决方法。它可以在 Azure Cosmos DB 中添加或更改数据时执行。只需将函数代码中不需要的字段去掉即可。

    【讨论】:

    • 感谢您的回答。但是我想将我的担忧(关于 cosmos db 触发的 azure 函数)告诉遇到这种情况的其他人。这不是非常理想的解决方案并且很危险。此解决方案的问题是 (添加或替换文档时会触发 cosmos db 触发函数)当您更新和替换 documentdb 上的文档时,它会再次触发此替换。 您应该检查是否删除了额外的数据替换它,否则可能会导致最大 tcp 连接限制的无限循环和瓶颈并锁定整个系统。
    【解决方案3】:

    为了回答您的问题,Azure 流分析服务没有内置支持从动态数据(iothub 信息)中排除列。但是,我们可以通过使用 UDF 来实现这一点。这里是more info on UDF

    UDF 可以帮助我们从输入数据中删除列并返回更新后的 json。

    实现这一点基本上有两个步骤:

    1. 创建一个 JavaScript UDF。

      • 从左侧导航(输入下方)转到功能。
      • 单击添加 --> JavaScript UDF。
      • 给函数别名 = removeiothubinfo
      • 保持输出类型 - 任意。
      • 将以下代码复制粘贴到函数定义中。

        function main(input) {
          delete input['IoTHub'];
          return input;
        }
        

        点击保存

    2. 更新查询

      • 进入查询模式并复制粘贴以下查询:

        WITH NewInput AS
        (
        SELECT
            udf.removeiothubinfo(iothub) AS UpdatedJson
        FROM
            [iothub]
        )
        SELECT
            UpdatedJson.*
        INTO
            [documentdb]
        FROM
            NewInput
        

        点击保存

    我建议您在运行作业之前通过上传包含类似 json 结构的示例文件来测试您的查询。

    已编辑

    此外,即使在作业兼容性级别 1.2 中,也没有额外的功能来实现这一点。看看这个for more info

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多