提问人:XKB 提问时间:11/8/2023 最后编辑:XKB 更新时间:11/10/2023 访问量:63
每个嵌套级别的 XML/JSON 源代理项序列
xml/json source surrogate sequence per nesting level
问:
半结构 xml/json 文件通常用于以主-细节级联方式序列化来自不同级别实体的关系数据。 由于对 xml/json 文件进行了排序,因此不一定提供唯一键来保留顺序和层次结构。
大多数 ETL 提供了一种反序列化这些实体实例的方法,方法是将它们从 xml/json 文件调度回不同的主从级联表,生成一个整数动态代理序列 PER LEVEL,该序列可以传播到主记录(作为唯一的代理键)和详细记录(作为主的引用外键)。
我似乎在 ADF 转换(无论是解析、展平、代理等)中找不到这样的功能。
在主级别进行分组可以达到对主记录进行唯一编号的目标,但链接会丢失到详细信息
扁平化整个xml/json源代码可能非常繁重,冗余,并且需要大量的重新扫描和查找才能实现该目标。
问题:(在ADF中)有什么聪明的想法可以在整个源数据集上一次性(一次扫描)中执行每个级联主细节级别的多个代理序列编号吗?
谢谢
@Rakesh : '应该从一开始就这样做 |假设以下结构(国家/地区名称也可以嵌套为常规 XML 标记):
<geo>
<country name="USA">
<city>Miami</city>
<city>Frisco</city>
</country>
<country name="France">
<city>Paris</city>
<city>Brest</city>
</country>
</geo>
理想情况下,我会生成以下两个数据流,每个数据流都有一个独立的序列,跟踪顺序和结构:
country_id | country_name |
---|---|
1 | 美国 |
2 | 法国 |
country_id | city_id | city_name |
---|---|---|
1 | 1 | 迈阿密 |
1 | 2 | 弗里斯科 |
2 | 3 | 巴黎 |
2 | 4 | 布列斯特 |
如果我得到两个序列(即使在 xml 保留的结构中),以下非规范化流程就可以了
country_id | country_name | city_id | city_name |
---|---|---|---|
1 | 美国 | 1 | 迈阿密 |
1 | 美国 | 2 | 弗里斯科 |
2 | 法国 | 3 | 巴黎 |
2 | 法国 | 4 | 布列斯特 |
下面这个是不行的:
city_id | country_name | city_name |
---|---|---|
1 | 美国 | 迈阿密 |
2 | 美国 | 弗里斯科 |
3 | 法国 | 巴黎 |
4 | 法国 | 布列斯特 |
...因为如果你想到一个非常大且深度嵌套的数据集,它会在下游进行大量的重新处理和查找,以重新连接主从-细节代理,而前面的示例只需要一次传递解析/传递。
关于如何做的任何想法?
谢谢
答: 暂无答案
评论
country_id