跳到主内容

视图

概述

在关系数据库管理系统 (RDBMS) 中,视图是一个虚拟表,它展示来自一个或多个表的数据,但本身不存储数据。它简化了复杂查询,提供了数据抽象,并通过控制对数据的访问来增强安全性。视图可以呈现数据的子集,连接表,执行数据转换,并简化查询。它们对于安全性、简化查询和以有意义的方式呈现数据非常有用。

Wren Engine 也为用户提供了视图来组织他们的数据。您可以调用在建模定义语言 (MDL) 中定义的任何数据集。

定义视图

在 MDL 中,我们可以定义一个视图列表,例如

[
{
"name": "useModel",
"statement": "select * from Orders"
},
{
"name": "useMetric",
"statement": "select * from Revenue"
},
{
"name": "useUseMetric",
"statement": "select * from useMetric"
}
]

很容易理解,视图可以访问 MDL 中的任何内容,例如模型、指标或另一个视图。视图的顺序无关紧要。您可以将视图放置在任何您想要的位置。例如

[
{
"name": "Revenue201306",
"statement": "select * from Revenue2013 where date_trunc('month', orderdate) = '2013-06-01'"
},
{
"name": "Revenue2013",
"statement": "select * from Revenue where date_trunc('year', orderdate) = '2013-01-01'"
}
]

视图 useMetricuseUseMetric 使用。然而,它可以放在 useMetric 的后面。

查询视图

就像查询模型一样。我们可以查询视图,例如

SELECT * FROM useUseMetric

限制

  • 视图的依赖不能是循环的。不允许出现以下情况。
[
{
"name": "viewA",
"statement": "select * from viewB"
},
{
"name": "viewB",
"statement": "select * from viewA"
}
]
  • Wren Engine 不支持递归视图。不允许出现以下情况。
[
{
"name": "viewA",
"statement": "select * from viewA"
}
]