【发布时间】:2019-07-11 04:02:35
【问题描述】:
我在 Netezza 中有一个 100,000 行乘 17 列的表。
我希望创建 10 个单独的视图,每个视图将原始表切成 10000 x 17 块。
我已阅读有关 row_number 函数的信息,但我不想使用特定列对原始表进行分区。
如何在 Netezza 中创建这样的视图?
【问题讨论】:
我在 Netezza 中有一个 100,000 行乘 17 列的表。
我希望创建 10 个单独的视图,每个视图将原始表切成 10000 x 17 块。
我已阅读有关 row_number 函数的信息,但我不想使用特定列对原始表进行分区。
如何在 Netezza 中创建这样的视图?
【问题讨论】:
这种“分裂”的目的是什么?
我想您希望这 17 个块的大小大致相同,因此根据您的目的,我会建议这两种方法使用所有 Netezza 表上存在的不同“内置”列:
1) select * from TABLE where hash(rowid) % 17 = 0 --- 将数字 0 替换为所有其他数字 1,2,3,4..16
2) select * from TABLE where datasliceid in (select dslice from _v_dual_dslice where dslice %17 = 0) — 将数字 0 替换为所有其他数字 1,2,3,4..16
第二个选项(如果我没记错列名的话)可能会优于第一个,但第一个可能会给出更均匀的“桶大小”
【讨论】: