使用数据地图获取展示信息

更新时间:
复制为 MD 格式

DataWorks的展示界面中,可以提供数据库中指定表的存储量、字段信息、分区信息、变更信息、DDL信息等数据,DataWorks称之为数据地图。AnalyticDB PostgreSQL提供了对应的查询接口,以支持数据地图所需要展示的信息。

版本限制

内核版本为7.4.2.2及以上的AnalyticDB for PostgreSQL7.0版实例。

说明

您可以在控制台实例的基本信息页查看内核小版本。如不满足上述版本要求,需要您升级内核小版本

使用示例

外表存储量获取

AnalyticDB PostgreSQL新增了get_oss_table_size(regclass)函数,用于快速查看OSS外表的存储占用。

SELECT get_oss_table_size('public.oss_foreign_test'::regclass);

返回示例

 get_oss_table_size 
--------------------
     550207488
(1 row)

表字段信息获取

AnalyticDB PostgreSQL新增了adbpg_toolkit.get_table_columns_info(regclass)函数,用于快速查看任何表的字段信息。

SELECT * FROM adbpg_toolkit.get_table_columns_info('test_table'::regclass) ;

返回示例

id | attname | atttype | attnotnull | description | is_primary_key | is_foreign_key | is_partition_key 
----+---------+---------+------------+-------------+----------------+----------------+------------------
  1 | a       | integer | f          |             | f              | f              | f
  2 | b       | date    | f          |             | f              | f              | t
(2 rows)

返回参数说明

参数

说明

id

列字段ID。

attname

列字段名称。

atttype

列字段类型。

attnotnull

列是否不能为空。

description

列字段备注。

is_primary_key

列字段是否为主键。

is_foreign_key

列字段是否为外键。

is_partition_key

列字段是否为分区键。

表变更信息获取

AnalyticDB PostgreSQL新增了adbpg_toolkit.get_table_last_operations(regclass)函数,用于获取表DDL相关的变更记录。

SELECT * FROM adbpg_toolkit.get_table_last_operations('test_table'::regclass);

返回示例

staactionname | stausename | stasubtype |            statime            
---------------+------------+------------+-------------------------------
 PARTITION     | adbpgadmin | EXCHANGE   | 2024-08-16 10:53:10.329194+08
 CREATE        | adbpgadmin | TABLE      | 2024-08-16 10:45:50.992821+08
(2 rows)

返回参数说明

参数

说明

staactionname

变更操作的名称。

stausename

变更操作的执行用户。

stasubtype

变更操作的执行类型。

statime

变更操作的时间。

DDL生成获取

AnalyticDB PostgreSQL新增了dump_parent_table_ddl(regclass)函数,用于获取表的DDL,其中对于分区表,仅获取主表的结构信息,以方便用户了解或复制表结构。

SELECT dump_parent_table_ddl('test_table'::regclass);

返回示例

                                                                   dump_parent_table_ddl                                                                    
-----------------------------------------------------------------------------------------------------------------------------------------------------
 --
 -- Greenplum Database database dump
 --

 -- Dumped from database version 12.12
 -- Dumped by pg_dump version 12.12

 SET gp_default_storage_options = '';
 SET statement_timeout = 0;
 SET lock_timeout = 0;
 SET idle_in_transaction_session_timeout = 0;
 SET idle_session_timeout = 0;
 SET client_encoding = 'UTF8';
 SET standard_conforming_strings = on;
 SELECT pg_catalog.set_config('search_path', '', false);
 SET check_function_bodies = false;
 SET xmloption = content;
 SET client_min_messages = warning;
 SET row_security = off;

 SET default_tablespace = '';

 --
 -- Name: test_table; Type: TABLE; Schema: public; Owner: adbpgadmin
 --

 CREATE TABLE public.test_table (
     a integer,
     b date
     )
 PARTITION BY LIST (b)
 DISTRIBUTED BY (a);


 ALTER TABLE public.test_table OWNER TO adbpgadmin;

 --
 -- Greenplum Database database dump complete
 --

(39 rows)

表统计信息获取

AnalyticDB PostgreSQL新增了adbpg_toolkit.table_datamap表用于记录所有表的统计信息,新增对应函数用于刷新和查询不同表的统计信息。

                                Table "adbpg_toolkit.table_datamap"
     Column     |  Type   | Collation | Nullable | Default | Storage  | Stats target | Description 
----------------+---------+-----------+----------+---------+----------+--------------+-------------
 oid            | oid     |           | not null |         | plain    |              | 
 parent_oid     | oid     |           |          |         | plain    |              | 
 schema_name    | text    |           |          |         | extended |              | 
 table_name     | text    |           |          |         | extended |              | 
 size           | bigint  |           |          |         | plain    |              | 
 pretty_size    | text    |           |          |         | extended |              | 
 tuple_count    | bigint  |           |          |         | plain    |              | 
 is_part_parent | boolean |           |          |         | plain    |              | 
Indexes:
    "table_datamap_pkey" PRIMARY KEY, btree (oid)
Distributed by: (oid)
Access method: heap

参数说明

字段

说明

oid

表的OID。

parent_oid

如果有父表,展示父表的OID。

schema_name

表的Schema名称。

table_name

表的名称。

size

表的大小。

pretty_size

表的大小(更便于阅读)。

tuple_count

元组数量。

is_part_parent

是否为分区父表。

  • 刷新统计信息

    --- 刷新指定表以及子表的统计信息进入table_datamap
    SELECT adbpg_toolkit.refresh_table('public.test_table');
    
    --- 刷新所有表的统计信息进入table_datamap
    SELECT adbpg_toolkit.refresh_datamap();
  • 查询统计信息

    --- 展示表以及子表的统计信息
    SELECT * FROM adbpg_toolkit.show_partition_info('public.test_table');