gpt4 book ai didi

azure-data-factory - Azure 数据工厂 - 数据流与数据争论 - 数组错误

转载 作者:行者123 更新时间:2023-12-05 05:40:48 26 4
gpt4 key购买 nike

Azure 数据工厂 - 数据流与数据争论 - 数组错误。

我有一个棘手的防火墙日志文件要使用 Azure 数据工厂处理。该文件由 4 个制表符分隔的列组成。日期和时间、来源、IP 和数据。

数据列由用等号分隔的键值对和用双引号分隔的文本组成。挑战在于数据列不一致并且包含任意数量的键值对组合。

源文件中的三行。

2022-02-13 00:59:59 Local7.Notice   192.168.40.1    date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798637882880 tz="+0200" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=192.168.41.200 srcport=58492 srcintf="port1" srcintfrole="undefined" dstip=216.239.36.55 dstport=443 dstintf="wan1" dstintfrole="undefined" srccountry="Reserved" dstcountry="United States" sessionid=137088638 proto=6 action="client-rst" policyid=5 policytype="policy" poluuid="c2a960c4-ac1b-51e6-8011-6f00cb1fddf2" policyname="All LAN over WAN1" service="HTTPS" trandisp="snat" transip=196.213.203.122 transport=58492 appcat="unknown" applist="block-p2p" duration=6 sentbyte=3222 rcvdbyte=1635 sentpkt=14 rcvdpkt=8 srchwvendor="Microsoft" devtype="Computer" osname="Debian" mastersrcmac="00:15:5d:29:b4:06" srcmac="00:15:5d:29:b4:06" srcserver=0
2022-02-13 00:59:59 Local7.Notice 192.168.40.1 date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798657887422 tz="+0200" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=192.168.41.200 srcport=58496 srcintf="port1" srcintfrole="undefined" dstip=216.239.36.55 dstport=443 dstintf="wan1" dstintfrole="undefined" srccountry="Reserved" dstcountry="United States" sessionid=137088640 proto=6 action="client-rst" policyid=5 policytype="policy" poluuid="c2a960c4-ac1b-51e6-8011-6f00cb1fddf2" policyname="All LAN over WAN1" service="HTTPS" trandisp="snat" transip=196.213.203.122 transport=58496 appcat="unknown" applist="block-p2p" duration=6 sentbyte=3410 rcvdbyte=1791 sentpkt=19 rcvdpkt=11 srchwvendor="Microsoft" devtype="Computer" osname="Debian" mastersrcmac="00:15:5d:29:b4:06" srcmac="00:15:5d:29:b4:06" srcserver=0
2022-02-13 00:59:59 Local7.Notice 192.168.40.1 date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798670487613 tz="+0200" logid="0001000014" type="traffic" subtype="local" level="notice" vd="root" srcip=192.168.41.180 srcname="GKHYPERV01" srcport=138 srcintf="port1" srcintfrole="undefined" dstip=192.168.41.255 dstport=138 dstintf="root" dstintfrole="undefined" srccountry="Reserved" dstcountry="Reserved" sessionid=137088708 proto=17 action="deny" policyid=0 policytype="local-in-policy" service="udp/138" trandisp="noop" app="netbios forward" duration=0 sentbyte=0 rcvdbyte=0 sentpkt=0 rcvdpkt=0 appcat="unscanned" srchwvendor="Intel" osname="Windows" srcswversion="10 / 2016" mastersrcmac="a0:36:9f:9b:de:b6" srcmac="a0:36:9f:9b:de:b6" srcserver=0

我处理这个数据集的策略如下。

  1. 使用制表符分隔的 CSV 从 Azure 数据湖获取数据文件数据集。这成功地提供了四列的源数据到我的数据流。

  2. 添加代理键转换以向每行数据添加递增键值。

  3. 添加派生列,具有以下功能。
    regexSplit(Column_4,'\s(?=(?:[^"](["])[^"]\1)[^"]$)' )这将按空格拆分数据,忽略分号之间的空格。

  4. 然后展开为数组中的每个项目创建一个新记录,同时保留其他列值。
    展开(SplitBySpace)

  5. 然后通过分隔符 equals 将键值对拆分为它们表示的值和键。

  6. 然后,最后一步是将数据反透视回列,其中受尊重的值按步骤 2 中添加的代理键分组。

这一切听起来不错,但不幸的是第 5 步失败并出现以下错误。 “索引只允许在数组和映射类型上使用”。

第 4 步后的输出。

enter image description here

unfold 函数根据 inspect 选项卡返回一个数组,见下文。我希望这里有一个字符串!!

现在在第 5 步中,我使用表达式 split(unfoldSplitBySpace, '=') 按“=”进行拆分,但这在表达式生成器中出现错误并显示消息“Split expect string type of argument”

将表达式更改为 split(unfoldSplitBySpace 1 , '=') 从表达式生成器中删除错误。

然后 spark 执行引擎出现错误“索引只允许在数组和映射类型上”

enter image description here

问题。
根据 Azure 数据工厂 UI,Unfold() 函数的输出是数组类型,但在访问数组元素或任何其他函数时,Spark 引擎无法将对象识别为数组类型。

这是执行中的错误还是我对数据工厂和 Spark 引擎如何理解数组的理解有问题?

最佳答案

Split()函数根据分隔符将字符串拆分为多个值并返回数组类型。

如果要拆分特定索引数组的值,请在大括号 [] 中提及索引。

示例:

这里我有一个数组值 ["employee=Robert", "D"],并使用 split(),我拆分索引值 1基于 =.

enter image description here

split(value[1], '=')

enter image description here

enter image description here

关于azure-data-factory - Azure 数据工厂 - 数据流与数据争论 - 数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72347346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com