Hash 对象
1.基本原理
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
在数据装载时,根据F(key)=内存地址将表存到内存中指定的地址;
|
|
内存地址(举例) |
|
|
|
|
|
|
|
|
A3= |
|
|
|
2.SAS中定义的HASH对象:
Hash对象的最基本的要点有三个:
(1)要放入内存中的表
(2)用来通过hash函数建立与内存对应存储地址的KEY值(可以是数值、字符或者两者的混合,最好是表的主键否则只有第一条记录有效,因为key值相同通过F(key)只会指向一个地址)。
(3)要调入内存中与key值一起构成数组的变量.
3.在SAS中分别通过以下步骤来完成上述三个要点:
(1)发布HASH对象
DECLARE hash hash_name(<</SPAN>dataset: 'dataset_name',ordered:'');
Object:指定对象,只能是hash或hiter;
hash_name:为建立的hash对象命名,便于后边调用。
dataset: 'dataset_name',指定要放入内存中的数据集
ordered: 'option' 装入内存中的数据要不按key进行排序,'option''是下面几种:ascending' | 'a';'descending' | 'd';'YES' | 'Y'; 'NO' | 'N'默认: NO 。
例如:
declare hash h (dataset:'work.a',ordered:'ascending');
按关键字的升序将数据集读入内存通过hash函数建立hash表。
(2)指定key值变量 hash_name.difinekey(“key_1”…);
例如:h.