Cover photo

SQL 视图

SxT 中的视图

空间和时间当前支持三种类型的视图。

  1. 标准 - 标准视图是基于 SQL 语句执行结果的虚拟表。标准视图不保存 SQL 语句生成的数据。当您查询标准视图时,会执行底层 SQL 语句,并将结果显示为真实的表。

  2. 物化- 与标准视图不同,物化视图保存执行基础查询的结果。物化视图可以按用户定义的时间间隔刷新,每次执行基础查询时都会保存新数据。

  3. 参数化- 参数化视图类似于标准视图,不同之处在于它可以采用针对视图执行查询时提供的附加参数。

    如何在 SxT 中创建视图

    1. 视图是使用与在空间和时间中创建表相同的配置资源 (DDL)端点创建的。

    2. 至少,您必须为正在创建视图的资源 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:

post image
  1. 视图名称为,其完整资源ID为my_new_viewSE_LAND.my_new_view

  2. 基础表是,其完整的resourceId是ofac_ethSE_LAND.ofac_eth

  3. 这是用于授予权限的密钥对的饼干公钥一侧。 也就是说,与包含此事实的饼干关联的饼干公钥:public_keycreate

    sxt:capability("ddl_create", "se_land.my_new_view");

  4. 如果基础表 ( ) 是这样创建的,那么您还需要向创建命令提供一个饼干,其中包含以下事实:

    sxt:capability("dql_select", "se_land.ofac_eth");

创建物化视图

材质视图可以用几乎相同的方式创建。有一项是必需的差异,另一项是可选的。

首先,您必须告诉 SxT 您想要创建一个物化视图。这就像添加到 SQL CREATE 命令一样简单,如下所示:MATERIALIZED

post image

下一个标志是可选的,允许您设置查询的时间(以分钟为单位)。刷新间隔定义了后端执行查询的频率。refresh_interval

post image
  • 目前,物化视图被硬编码为每天刷新一次。在短期内,这将更改为使用刷新间隔,因此强烈建议设置为所需的长度(或 1440 = 分钟每天)

  • 材质视图的 access_type 直接从基础表派生,不需要在 create 语句中指定。

  • 指定的饼干公钥仅用于针对物化视图的 DDL(创建和删除)操作。

    创建参数化视图

    参数化视图与标准视图类似,不同之处在于它可以采用针对视图执行查询时提供的附加参数。因此,当我们创建视图时,我们也会定义参数。

    cURL

    curl --location '/v1/sql/ddl' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ACCESS_TOKEN' \ --data '{ "biscuits": \[ "<BISCUIT-WITH-CREATE-PERMS>" \], "sqlText": "CREATE PARAMETERIZED VIEW se_land.my_new_para_view WITH \"public_key=\" AS SELECT * FROM se_land.dnft_42 WHERE POINTS>@param1" }' 我们来看看SQL:

    post image

    如您所见,我们用 指定参数。@param1

    查询视图

    查询视图的方式与查询任何其他表的方式相同。

    1. 标准

      • SELECT * FROM SE_LAND.my_new_view

    2. 物化

      • SELECT * FROM SE_LAND.my_new_mat_view

    3. 参数化

      • 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 <VIEW_NAME>

        DROP MATERIALIZED VIEW <VIEW_NAME>

        DROP PARAMETERIZED VIEW <VIEW_NAME>