数据工厂中映射数据流中没有转义符的错误

时间:2020-07-16 16:55:21

标签: azure azure-data-factory azure-data-factory-2

TLDR:为什么Azure数据工厂数据流不允许您没有转义符?

我们有来自错误源的错误数据,这些数据不太可能最终更新(这是我最好的表述方式)。他们有多个列,其中列中的值为01F \或8239 \,反斜杠在其规范中写为该值的一部分,而不是像标准格式那样在整个世界中都被视为转义字符。 / p>

文件的总体设置是用逗号分隔,每列的内容都在“”中,并且我们具有所有常规的换行符。只是反斜杠不符合标准。例如

"Column 1","Column 2","Column 3","Column 4"
"John","01F\","34","NY"
"Jane","3K","8239\","CA"

|---------------------|------------------|------------------|------------------|
|      Column 1       |     Column 2     |     Column 3     |     Column 4     |
|---------------------|------------------|------------------|------------------|
|        "John"       |       "01F\"     |       "34"       |         "NY"     |
|---------------------|------------------|------------------|------------------|
|        "Jane"       |        "3K"      |      "8239\"     |         "CA"     |
|---------------------|------------------|------------------|------------------|


在Azure数据工厂中,我们尝试查看是否可以使它忽略\作为转义字符。 (仅供参考,当我们将其保留为转义字符时,它会将带有反斜杠的列紧紧拉到一列之后)。我们可以在数据集中看到在何处进行设置,以便没有转义字符。

enter image description here

但是,当我们随后将该数据集添加到数据流中并尝试在其中预览数据时,会收到一个错误,即数据流中不能没有转义字符,并且引号字符不应为引号字符当我们没有转义字符时。

enter image description here

如果我们尝试返回并且也未设置引号字符(我们实际上不希望这样做,只是为了测试它是否可以工作),我们将得到一个错误,即数据流无法没有转义或引号字符。

enter image description here



如果这两个选项在Azure数据工厂中不起作用,那么有什么用呢?还是在其他地方我们需要更新其他设置才能使其正常工作?

谢谢!!

编辑:我忘了提一下,我们还尝试查看是否可以替换数据流列映射部分中的反斜杠。我们尝试使用replace()函数,但无法使其正常工作(继续出现语法错误)。
ORIGINAL working code for column: trim(toString($$))
ATTEMPTED WORKAROUNDS:
replace(trim(toString($$)),'\','-')
trim(replace(toString($$),'\','-')
trim(toString(replace($$),'\','-'))

2 个答案:

答案 0 :(得分:0)

对于“分隔文本”源,不允许您选择带有“无转义字符”的引号字符。您可以尝试解决方法选项

  1. 如果目的地是Azure Synapse,请尝试使用Polybase加载。 (它将使用转义序列和引号字符加载数据。加载数据后,您可以进行清理。)
  2. 如果可能,将源数据格式从“定界文本”转换为“ parquet”或“ Json”

答案 1 :(得分:0)

我只是想分享一个微软论坛上的用户提供的答案,最终可以解决问题。

我们在数据集设置中将转义字符从\更改为^(只有在确认^字符在任何地方都没有以任何方式使用之后,才进行此操作)。我们没有在列的映射中应用replace函数,因为不幸的是我们需要在这些列中保留\字符。但这确实有效,并且我们的数据现在正在按照我们需要的方式流动(即使这些不是数据管理的最佳做法)。

https://docs.microsoft.com/en-us/answers/questions/48595/error-with-no-escape-character-in-mapping-data-flo.html