2016-02-02 52 views
0

有一个按列x分布的表A;取决于其他密钥的分布的Greenplum分配密钥

CREATE table A (x integer, y integer) distributed by (x); 

还有另一个表B有列“y”而不是“x”。

CREATE TABLE B (y integer); 

有什么办法可以根据表格A上“y”的分布来分配B吗?那么我们可以使用列“y”来连接两个表,而不需要在段之间重新分配数据?基本上,这意味着列在表A上的分布“Y”驱动表B.

SELECT 
* 
FROM A 
JOIN B using (y); 

的问题是该表中的分布往往加入到由“X”分发的其他表,这就是为什么我们不”你想改变表格A的分布。

列“y”是唯一的

谢谢。

回答

0

不,你不能但我不会那么担心。当你将这两张桌子连接在一起时,你会过滤表格b还是a?如果是这样,Greenplum将使用它来移动完成数据所需的数据。其次,如果你担心这一点,你可以通过添加表b中的列来对表a去标准化。

+0

这就是我的想法。我想确认没有简单的解决方法或设计策略可以提供帮助(尽管我们对后者没有太大的灵活性)。谢谢。 – ikusimakusi