【问题标题】:How to remove escape character from the output of Lookup activity in Azure Data Factory?如何从 Azure 数据工厂中查找活动的输出中删除转义字符?
【发布时间】:2021-02-18 18:49:58
【问题描述】:

我正在从 Azure 数据工厂中的 SQL 数据库读取 JSON 数据。 我有 Azure 数据工厂 (ADF) 管道,包含“查找”活动,它从 SQL DB 读取 JSON 数据并将其带入 ADF 管道。当我在 ADF 的查找活动的输出中看到时,转义字符(“\”)以某种方式插入到 JSON 数据中。

例如,Lookup 活动的输出变成这样: {\"resourceType\":\"Sales","id":\"9i5W6tp-JTd-24252\"

知道如何从管道中的 JSON 中删除转义字符吗?

更新:

感谢约瑟夫的更新。当我尝试你的步骤时,它对我不起作用。

  1. 在查找中正在从 SQL DB 读取数据。

  1. 这是我的附加变量:

运行后还是看到转义符

{
    "firstRow": {
        "JSONData": "{\"resourceType\":\"counter\",\"id\":\"9i5W6tp-JTd- and more

【问题讨论】:

  • 所以你想像这样将{"resourceType":"Sales","id":"9i5W6tp-JTd-24252"} 转换为{"resourceType":Sales,"id":9i5W6tp-JTd-24252}
  • 其实lookup activity的输出是这样的: "{\ "resourceType\":\ "Sales\",\ "id\ ":\ "9i5W6tp-JTd-24252\ "} 而我想要删除所有转义字符,输出应该是这样的: {"resourceType":"Sales","id":"9i5W6tp-JTd-24252"}

标签: azure azure-devops azure-sql-database azure-data-factory


【解决方案1】:

我们知道,'\' 是一个转义字符。在您的情况下,出现此符号是因为它用于在一对双引号中转义一个双引号。
例如,"\"" => """。

不过没关系,我们只需要把它从字符串类型转换为json类型,它会自动去除转义字符。 我创建了一个测试来验证它。

  1. 首先,我定义了一个数组类型的变量。
  2. 我的查找活动的输出如下:
  3. 然后我使用 AppendVariable 活动并使用表达式@json(activity('Lookup1').output.firstRow.value) 将其从字符串类型转换为 json 类型。
  4. 我运行调试后,我们可以看到如下结果,没有'\'。

【讨论】:

  • 嗨 Dinesh Madhup,我也在使用 SQL 查询从数据库中获取数据。我正在使用 sql 查询 DECLARE @json NVARCHAR(MAX); SET @json = N'[ {"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25}, {"id": 5, "info": {"name": "Jane", "surname": "Smith"}, "dob": "2005-11-04T12:00:00"} ]'; SELECT * FROM OPENJSON(@json)。它将返回一个 json 字符串。
  • 请看我的帖子。我尝试了相同的步骤,除了 SQL 查询。 SQL QUERY 重要吗?
  • 实际上它在我使用 @json(activity('Lookup2').output.firstRow.JSONData) 时有效,但我只需要值。不想看到“variableName”:“Object”。这就是我打算使用的原因:@json(activity('Lookup2').output.value)。有什么区别?
  • 这个表达式是根据输出的结构决定的,不一样。
  • 嗨约瑟夫,我知道事情是如何被破坏的。如果我的查询有超过 1 行,那么它会失败。例如: SELECT TOP(2) JSONData FROM StgFHIR WHERE ISJSON(JSONData) > 0 在这种情况下,我们不能在这一行中使用 firstRow:@json(activity('Lookup2').output.firstRow.JSONData 那么,怎么能在 Lookup 中使用超过 1 行?
猜你喜欢
  • 2022-06-26
  • 2020-05-18
  • 2021-12-17
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2021-03-26
相关资源
最近更新 更多