使用WHERE语句从视图中查询数据

问题描述 投票:0回答:1

我的 Databricks Unity 目录中有两个表。

  1. trips
    的数据,大约30.000行。
行程ID 客户 地点 开始 结束 ...
ABC 客户1 loc1 2023-01-01T00:00:00 2023-01-01T08:00:00 ...
防御 客户1 loc2 2023-01-01T10:00:00 2023-01-01T15:00:00 ...
  1. metrics
    数据宽表
时间戳 传感器1 传感器2 ...
01-01-2023T02:01:01 val1 val2 ...
01-01-2023T02:01:02 val3 val4 ...

我们想将这两个表组合在一个类似的视图中

CREATE VIEW AS my_view
SELECT *
FROM metrics
LEFT JOIN trips ON timestamp BETWEEN start AND end

最终用户将通过类似查询在其应用程序中查询此视图

SELECT *
FROM my_view
WHERE Client = 'my_client' and Location = 'my_location'

创建表而不是视图是不可取的,因为数据会相乘

我的问题是: 在对客户/位置进行过滤之前是否会创建整个视图, 或者当查询视图时会立即执行客户端/位置过滤吗?

sql view databricks
1个回答
0
投票

在 Databricks 中,单独使用

CREATE VIEW
将创建一个非物化视图。 该视图在执行时通常会像底层选择查询一样运行。

另一方面,如果您要使用

CREATE MATERIALIZED VIEW
,那么视图将被预编译并保留在您的数据库中。 在这种情况下,从物化视图中进行选择将访问底层选择查询的已计算结果。

请参阅此处,了解有关在 Databricks 中使用物化视图的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.