疑问
在Maxcompute中我们关联的码表大于8个,然后数据存储量大于500W,那么在进行sql清洗的时候极有可能会被卡死。可是我们就是要在一张表上关联10多个表,比如一张表中的很多字段都要关联码表,因为其有对应的翻译字段。那我们改怎么办呢?
只能将他分成俩次进行关联。
难不成我们要重新创建一个中间表就是为了关联一下么?卧槽,这也太操蛋了吧。
答案
答案流程
1、面对这样的问题的时候sql中伟大的视图出现了,他就当做个第三方的中间机制。
2、将第一个表和8个代码表进行关联的表进行虚拟化,在sql的内部形成一个虚拟的整体。除了不存在于数据库中的表面和表结构之外,真实表中所有的属性他都有。可以进行任意的内置函数的操作。
3、那么在后面我们要关联剩下的要关联的表和这张假皮(视图)进行关联操作了。这样所有需要翻译、关联的代码表就都关联上了。
4、这样我们可以类推:我们有30个要关联的表怎么办,那么我们是不是就把这三十个字段进行切分,形成3个视图+一个实体表就可以了。
5、 最后也是一个视图+一个实体表的关联。因为下一个表(无论是视图还是实体表)的数据来源是不是都是来自于上一个表,那么上一个表+新增关联码表=下一个视图或者实体表。只是在最后的实体表我们才能表所有的数据写进去。
视图也会有分区的概念的。
下面时我们最爱的DEMO环节(一个视图+一个实体表)
---逐层关联---