从雪花表的变体列中获取 xml 元素
Posted
技术标签:
【中文标题】从雪花表的变体列中获取 xml 元素【英文标题】:Getting xml Element from variant column of a Snwoflake table 【发布时间】:2021-04-25 02:07:21 【问题描述】:这是我的示例数据
ID VERSION ACT_TYPE EVE_TYPE CLI_ID DETAILS OBJ_TYPE DATE_TIME AAPP_EVENT_TO_UTC_DT GRO_ID OBJECT_NAME OBJ_ID USER_NAME USER_ID EVENT_ID FINDINGS SUMMARY
6tgbcrq9pfhj1ezsdo82mcrzz o SCREENED_CASE WORLDCHECK o <?xml version="1.0" encoding="UTF-8" standalone="yes"?><testPayload><testId>565656-21cf-4c7e-8071-574a1ef78981</testId><testCode>COMPLETED</testCode><testState>TEST</testState><testResults>1</testResults><testRequiredResults>0</testRequiredResults><testExcludedResults>0</testExcludedResults><testAutoResolvedResults>1</testAutoResolvedResults><testproviderTypes>WATCHLIST</testproviderTypes></testPayload> CASE 9/16/2020 9:45 9/16/2020 9:45 erutrt7-d726-4672-8599-83d21927bec5 o 5786765dfgdfgdfg System User USER_SYSTEM o o <?xml version="1.0" encoding="UTF-8" standalone="yes"?><testCaseEventSummary><testTypes>WATCHLIST</testTypes><testResults>1</testResults></testCaseEventSummary>
我需要从这个表中获取 ID ,testId 。
请注意 testId 在 DETAIL 列中,它是一个 xml 。
我正在尝试类似下面的方法,但它不起作用
select DETAILS:"$" from audit_event;
【问题讨论】:
【参考方案1】:首先你需要用parse_xml将它转换成xml,然后使用xmlget函数获取testId字段,如下所示:
select xmlget(parse_xml(details), 'testId'):"$"::varchar from audit_event
我以为你想要它作为 varchar
回来,所以我把 ::varchar
放在最后这样做。
【讨论】:
以上是关于从雪花表的变体列中获取 xml 元素的主要内容,如果未能解决你的问题,请参考以下文章
从 XML 获取数据 - XMLGet 函数使用属性名称及其在雪花中的值
我想写一个sql查询来获取soap xml中两个标签之间的数据,这些标签出现在oracle表的clob列中