On this page
UpdatableViews
Proposal
在以下情况下,Hive 将考虑更新视图:
该视图仅在 FROM 子句中引用一个基本表或可更新视图,而没有 WHERE 子句。
视图中的每一列都是基础表/可更新视图中的一列,没有重复的基础列。
视图必须具有与基础表/可更新视图相同的分区列。
插入视图时:
- 如果视图未指定所有基础列,则将为每个未指定的列插入 NULL。
Given
create table t1 (id int, key string, value string) partitioned by (ds string, hr string);
create view v partitioned on (ds, hr) as select id, value, ds, hr from t1;
我们可以插入 v,其中 NULL 将用作键。
Notes:
我们是否应该尝试支持像这样的视图(创建在(ds,hr)上划分的视图 v 作为选择 id,值,ds,其中 ds ='2011-01-01'和 hr = '12')进行更新,我们可以推断出 ds 和 hr?
对于非动态分区,我们是否要求分区位于可更新视图链中的每个视图上?如果您没有对所有视图的写权限,这似乎很麻烦?
当我们为视图指定动态分区时,我们是否在可更新视图链中的每个视图上创建分区?如果不这样做,则可能会有奇怪的行为,其中 SHOW PARTITIONS 可能不会在视图上显示任何内容,但是我们可以将其插入视图的此类分区中。如果这样做,则在视图上放置分区实际上对数据没有任何作用。
有关视图的一般信息,请参见Hive Views。