Azure 数据工厂将十六进制转换为字符串
Azure Data Factory convert Hex to string
我正在尝试将十六进制转换为数据工厂中的可读字符串。
注意:在这种情况下我不应该使用数据流。
Input file:
col_a
------
0x737461636b6f766572666c6f77
Output:
After converting I need to capture this value in a variable:
?Whosebug
解释:0x737461636b6f766572666c6f77 HEX的值转换后等于?Whosebug字符串
目前,Unhex 转换函数在管道级别不可用,无法将十六进制值转换为字符串。
您可以在数据流中使用派生列转换,也可以调用 Azure 函数来转换值。
Azure 数据工厂 (ADF) built-in expressions and functions 目前不支持从十六进制到字符串的转换(很高兴得到更正),但您有几个选择:
如果您附近有一些 SQL 计算(Azure SQL 数据库、Azure Synapse Analytics、托管实例等),您可以通过 Lookup
activity, 例如
SELECT CAST( 0x737461636b6f766572666c6f77 AS VARCHAR(100) );
您可以将此语句构造为如下表达式:
@concat('SELECT CAST( ', variables('varInput'),' AS VARCHAR(100) );')
一个工作示例:
- 您也可以使用笔记本,例如 Databricks 或 Synapse Notebook。这是 Scala 中的一个简单示例:
注意我确实使用基于纯 ADF 表达式的技术实现了它,一个 For Each activity,附加变量和这个 但是 运行 花了 30 秒我觉得很可怕。我还得到了一个使用 built-in 函数 decodeUriComponent
的方法,因为 @decodeUriComponent('%6b')
是 'k' 且具有相似的 运行 次。您仍然必须按顺序以两个字符的块循环遍历字符串,这需要很长时间。我还寻找了一个外部 public REST API(您可以通过 Web activity 调用)进行了此转换但找不到。
我正在尝试将十六进制转换为数据工厂中的可读字符串。
注意:在这种情况下我不应该使用数据流。
Input file:
col_a
------
0x737461636b6f766572666c6f77
Output:
After converting I need to capture this value in a variable:
?Whosebug
解释:0x737461636b6f766572666c6f77 HEX的值转换后等于?Whosebug字符串
目前,Unhex 转换函数在管道级别不可用,无法将十六进制值转换为字符串。
您可以在数据流中使用派生列转换,也可以调用 Azure 函数来转换值。
Azure 数据工厂 (ADF) built-in expressions and functions 目前不支持从十六进制到字符串的转换(很高兴得到更正),但您有几个选择:
如果您附近有一些 SQL 计算(Azure SQL 数据库、Azure Synapse Analytics、托管实例等),您可以通过
Lookup
activity, 例如SELECT CAST( 0x737461636b6f766572666c6f77 AS VARCHAR(100) );
您可以将此语句构造为如下表达式:
@concat('SELECT CAST( ', variables('varInput'),' AS VARCHAR(100) );')
一个工作示例:
- 您也可以使用笔记本,例如 Databricks 或 Synapse Notebook。这是 Scala 中的一个简单示例:
注意我确实使用基于纯 ADF 表达式的技术实现了它,一个 For Each activity,附加变量和这个 decodeUriComponent
的方法,因为 @decodeUriComponent('%6b')
是 'k' 且具有相似的 运行 次。您仍然必须按顺序以两个字符的块循环遍历字符串,这需要很长时间。我还寻找了一个外部 public REST API(您可以通过 Web activity 调用)进行了此转换但找不到。