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:

  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

下一个标志是可选的,允许您设置查询的时间(以分钟为单位)。刷新间隔定义了后端执行查询的频率。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": \[
    
                "<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:

如您所见,我们用 指定参数。@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>

Mirror文章信息

Mirror原文:查看原文

作者地址:0x36D6110bCB79ACadf0330e268583438c5320A42d

内容类型:application/json

应用名称:MirrorXYZ

内容摘要:Ur7LcwHOEz0kZ3zB-t_NSsM1CsVG5VHF4R_2TyPHg6M

原始内容摘要:69EMhCHCMM6yTmPCt8DHNAoOTaNgT3DTgUPWoO41BcE

区块高度:1376311

发布时间:2024-03-04 01:27:48