# SQL 视图 **Published by:** [Breezeandmoon](https://paragraph.com/@breezeandmoon/) **Published on:** 2024-03-04 **URL:** https://paragraph.com/@breezeandmoon/sql-4 ## Content SxT 中的视图空间和时间当前支持三种类型的视图。标准 - 标准视图是基于 SQL 语句执行结果的虚拟表。标准视图不保存 SQL 语句生成的数据。当您查询标准视图时,会执行底层 SQL 语句,并将结果显示为真实的表。物化- 与标准视图不同,物化视图保存执行基础查询的结果。物化视图可以按用户定义的时间间隔刷新,每次执行基础查询时都会保存新数据。参数化- 参数化视图类似于标准视图,不同之处在于它可以采用针对视图执行查询时提供的附加参数。如何在 SxT 中创建视图视图是使用与在空间和时间中创建表相同的配置资源 (DDL)端点创建的。至少,您必须为正在创建视图的资源 ID 提供具有 CREATE 权限的 Biscuit。如果您的查询运行所针对的基础表是使用权限创建的,则此方法有效。如果您的视图将查询的表是,那么您还需要为基础表提供具有适当权限的 Biscuit 。access_type=public_readaccess_type=permissionedSELECT 创建标准视图 cURL curl -i --request POST \ --url "https://<API_URL>/v1/sql/ddl" \\ --header "accept: application/json" \\ --header "authorization: Bearer <ACCESS_TOKEN>" \\ --header "content-type: application/json" \\ --data ' { "biscuits": ["EuwBCoEBCg5zeHQ6Y2Fw..."], "sqlText": "CREATE VIEW SE_LAND.my_new_view WITH \\"public_key=<BISCUIT_PUBLIC_KEY>\\" AS SELECT \* FROM SE_LAND.ofac_eth" } '下面仔细看看我们正在执行的 SQL:视图名称为,其完整资源ID为my_new_viewSE_LAND.my_new_view基础表是,其完整的resourceId是ofac_ethSE_LAND.ofac_eth这是用于授予权限的密钥对的饼干公钥一侧。 也就是说,与包含此事实的饼干关联的饼干公钥:public_keycreate sxt:capability("ddl_create", "se_land.my_new_view");如果基础表 ( ) 是这样创建的,那么您还需要向创建命令提供一个饼干,其中包含以下事实: sxt:capability("dql_select", "se_land.ofac_eth");创建物化视图材质视图可以用几乎相同的方式创建。有一项是必需的差异,另一项是可选的。 首先,您必须告诉 SxT 您想要创建一个物化视图。这就像添加到 SQL CREATE 命令一样简单,如下所示:MATERIALIZED下一个标志是可选的,允许您设置查询的时间(以分钟为单位)。刷新间隔定义了后端执行查询的频率。refresh_interval目前,物化视图被硬编码为每天刷新一次。在短期内,这将更改为使用刷新间隔,因此强烈建议设置为所需的长度(或 1440 = 分钟每天)材质视图的 access_type 直接从基础表派生,不需要在 create 语句中指定。指定的饼干公钥仅用于针对物化视图的 DDL(创建和删除)操作。创建参数化视图参数化视图与标准视图类似,不同之处在于它可以采用针对视图执行查询时提供的附加参数。因此,当我们创建视图时,我们也会定义参数。 cURL curl --location '/v1/sql/ddl' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ACCESS_TOKEN' \ --data '{ "biscuits": \[ "" \], "sqlText": "CREATE PARAMETERIZED VIEW se_land.my_new_para_view WITH \"public_key=\" AS SELECT * FROM se_land.dnft_42 WHERE POINTS>@param1" }' 我们来看看SQL:如您所见,我们用 指定参数。@param1查询视图查询视图的方式与查询任何其他表的方式相同。标准SELECT * FROM SE_LAND.my_new_view物化SELECT * FROM SE_LAND.my_new_mat_view参数化SELECT * FROM SE_LAND.my_new_para_view('param1=4')或具有多个参数:SELECT * FROM SE_LAND.my_new_para_view('param1=10','param2=20')删除视图:请注意,应该是完整的资源 ID。例如,VIEW_NAMESE_LAND.my_new_para_view DROP VIEW DROP MATERIALIZED VIEW DROP PARAMETERIZED VIEW ## Publication Information - [Breezeandmoon](https://paragraph.com/@breezeandmoon/): Publication homepage - [All Posts](https://paragraph.com/@breezeandmoon/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@breezeandmoon): Subscribe to updates - [Twitter](https://twitter.com/OBM5D942LYocssN): Follow on Twitter