COMPUTE_FLEXTABLE_KEYS
计算来自 flex 表 VMap 数据的虚拟列(键和值)。使用此函数可计算键,而不必创建关联的表视图。如需生成视图,请使用 COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW。
注意
如果密钥的长度超过 65,000,Vertica 会截断该密钥。函数将其结果存储到关联的 Flex 键表 (
flexTableName_keys
),其中包含以下列:
-
key_name
-
frequency
-
data_type_guess
有关详细信息,请参阅计算 Flex 表键。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
COMPUTE_FLEXTABLE_KEYS ('[[database.]schema.]flex-table')
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。-
flex-table
- Flex 表的名称。
使用数据类型猜测
data_type_guess
列中的结果取决于 EnableBetterFlexTypeGuessing
配置参数。默认情况下,参数为 1 (ON)。此设置会导致函数采用以下类型之一(以及 数据类型 中列出的其他类型)返回 data_type_guess
列中的所有非字符串键:
-
BOOLEAN
-
INTEGER
-
FLOAT
-
TIMESTAMP
-
DATE
将配置参数设置为 0 (OFF) 会导致函数仅返回键表 data_type_guess
列中所有值的字符串类型 ([LONG]VARCHAR) 或 ([LONG] VARBINARY)。
使用此部分中的示例 CSV 数据来比较使用或不使用 EnableBetterFlexTypeGuessing
配置参数的结果。当参数为 ON 时,该函数可以更准确地确定地图数据中的关键非字符串数据类型。该参数的默认值为 1 (ON)。
Year,Quarter,Region,Species,Grade,Pond Value,Number of Quotes,Available
2015,1,2 - Northwest Oregon & Willamette,Douglas-fir,1P,$615.12 ,12,No
2015,1,2 - Northwest Oregon & Willamette,Douglas-fir,SM,$610.78 ,12,Yes
2015,1,2 - Northwest Oregon & Willamette,Douglas-fir,2S,$596.00 ,20,Yes
2015,1,2 - Northwest Oregon & Willamette,Hemlock,P,$520.00 ,6,Yes
2015,1,2 - Northwest Oregon & Willamette,Hemlock,SM,$510.00 ,6,No
2015,1,2 - Northwest Oregon & Willamette,Hemlock,2S,$490.00 ,14,No
要比较数据类型分配结果,请完成以下步骤:
-
保存此 CSV 数据文件(此处保存为
trees.csv
)。 -
创建 Flex 表 (
trees
) 并使用fcsvparser
加载trees.csv
:=> CREATE FLEX TABLE trees(); => COPY trees FROM '/home/dbadmin/tempdat/trees.csv' PARSER fcsvparser();
-
将
COMPUTE_FLEXTABLE_KEYS
用于trees
Flex 表。=> SELECT COMPUTE_FLEXTABLE_KEYS('trees'); COMPUTE_FLEXTABLE_KEYS ----------------------------------------------- Please see public.trees_keys for updated keys (1 row)
-
查询
trees_keys
表输出:=> SELECT * FROM trees_keys; key_name | frequency | data_type_guess ------------------+-----------+----------------- Year | 6 | Integer Quarter | 6 | Integer Region | 6 | Varchar(66) Available | 6 | Boolean Number of Quotes | 6 | Integer Grade | 6 | Varchar(20) Species | 6 | Varchar(22) Pond Value | 6 | Numeric(8,3) (8 rows)
-
将
EnableBetterFlexTypeGuessing
参数设置为 0(OFF)。 -
再次使用
trees
Flex 表调用COMPUTE_FLEXTABLE_KEYS
。 -
查询
trees_keys
表,将data_type_guess
的值与之前的结果进行比较。如果没有配置参数集,所有非字符串数据类型都是各种长度的 VARCHARS:=> SELECT * FROM trees_keys; key_name | frequency | data_type_guess ------------------+-----------+----------------- Year | 6 | varchar(20) Quarter | 6 | varchar(20) Region | 6 | varchar(66) Available | 6 | varchar(20) Grade | 6 | varchar(20) Number of Quotes | 6 | varchar(20) Pond Value | 6 | varchar(20) Species | 6 | varchar(22) (8 rows)
-
要保持非字符串数据类型的准确结果,请将
EnableBetterFlexTypeGuessing
参数重新设置为 1 (ON)。
有关 EnableBetterFlexTypeGuessing
配置参数的详细信息,请参阅 EnableBetterFlexTypeGuessing。