首页 > 代码库 > QlikView AutoNumber函数
QlikView AutoNumber函数
真的要吐槽下百度上QlikView的资料少之又少,今天竟然还访问不了Google了。索性以后把新学会的QlikView的函数等大大小小知识点都放到CSDN来好了。希望能遇见更多一起学习研究QlikView的同道中人。
QlikView中介绍Autonumber的格式是这样的: autonumber(expression[ , AutoID])
个人觉得有些费解,其实说白了Expression就是若干个字段的组合,一个字段或者N个字段拼在一起,autonumber会自动为这若干个字段生成一个distinct结果集,然后计算出源数据集中每一行若干个字段值在这个distinct结果集中的位置。
比如某数据集有几个字段:
TestAutoNumber:Load * Inline [Field1, Field2, Field3, Field41, 2, 3, 41, 3, 3, 62, 4, 5, 6];
AutoNumber(Field2) as b会生成distinct结果集: 2, 3, 4
Table1:LOAD *, AutoNumber(Field1, 'counter1') as a, AutoNumber(Field2, 'counter2') as b, AutoNumber(Field1&Field2, 'counter3') as c, AutoNumber(Field1&Field2&Field3, 'counter1') as dResident TestAutoNumber;DROP Table TestAutoNumber;
b列返回的值是1,2,3, 因为第一行数据中字段Field2的值在该Distinct结果集排序是1, 第二行数据中字段Field2的值在Distinct结果集排序是2,以此类推,
c列将用Field1和Field2合并后的值生成DISTINCT结果集,然后获得每一行数据中Field1&Field2在该结果集中的排序位置。
a列和d列有所不同,因为他们的第二个参数是一样的都是‘counter1‘,因此a和d中的Field1以及Field1&Field2&Field3合并生成同一个distinct结果集。计算a时判断每一行数据中Field1在该合并后的distinct结果集中的排序位置,计算d时会判断每一行数据中Field1&Field2&Field3在该Distinct结果集中的排序位置。