sql - 根据某些字段比较两行并在发现差异时标记它们
问题描述
我在雅典娜中创建了一个表。表结构如下所示:
id (string)
event_val (string)
eventsource (string)
eventtype (string)
payload (struct<field1:struct<attribute2:struct<tokenRegion:string,tokenType:string,token:string>,attribute15:string,attribute1:string,attribute8:string,updatedAt:string,status:string,internalRevision:int,attribute13:string,attribute12:string,id:int,textLineCount:int,createdAt:string,attribute11:string,supplierNumber:struct<tokenRegion:string,tokenType:string,token:string>,shippingTermsCode:string,attribute10:string,attachmentTextConcat:string,attribute18:string,attribute4:string,fileName:string,textLineSplitCount:int,version:int>,textLines:array<struct<price:int,invoiced:int,attribute5:string,attribute11:string,status:string,id:int,lineVersion:int,suppAuxPartNum:string,total:double,attribute12:string,description:string,uOM:string,updatedAt:string,attribute2:string,texteld2:array<struct<segment2:string,accountAllocationSequence:int,segment3:string,segment4:string,orderLineId:int,segment5:string,attribute11:string,segment6:string,attribute12:string,accountAllocationId:int,segment7:string,segment1:string,fileName:string,accountAllocationAmount:double,version:int,orderHederId:int>>,quantity:double,lineNumber:int,sourcePartNum:string,lineType:string,version:int,fileName:string,needByDate:string,createdAt:string,orderHeaderId:int>>>)
在此表中,每个 event_val 键将有两个条目。并且事件源字段将是“value_a”或“value_b”。基本上,我们从两个不同的事件源插入两个具有相同 event_val 值的事件。
我需要比较每一对这样的对,如果有区别的话。有效载荷中的某些字段可能存在也可能不存在。
另外,我们如何对 payload.textLines 进行比较?
解决方案
您可以使用map_agg
group by onevent_val
注意:您需要检查实际语法。但是像下面这样的事情应该做。
With
intermediate_table as
(
select event_val, map_agg(eventsource, payload) as payload_by_eventsource
from <table_name>
group by event_val
),
intermediate_table_2 as
(
select event_val, payload_by_eventsource['source_a'] as source_a_payload, payload_by_eventsource['source_b'] as source_b_payload
from intermediate_table
)
select .......
from intermediate_table_2
where....
推荐阅读
- function - 有没有办法在 perl 中将函数声明为变量?
- javascript - 在将 API 数据传递到组件方面需要帮助
- jquery - 如何使用 jquery 在引导时间选择器中禁用过去的时间
- reactjs - 如何在reactjs中的cellrenderer中添加模态
- c# - C# 在哈希中存储和检索对象属性
- python-3.x - 如何以 UTF-8 格式打开 HTML 文件进行解析?
- r - 如何使用另一个数据框根据多个条件过滤数据框
- react-native - 我在使用 react-navigation 在 tab-navigator 中制作 stack-navigator 时遇到问题
- docker - 日志文件保存在 docker 容器中的什么位置以及如何复制它?
- java - StringDate to Date 在 java 中 SimpleDateFormat 中的不同时间出现