sql2000数据类型对应的数值_Qlikview---数据类型

Qlikview不设数据类型,而是采用双重格式(Dualformat),每个字段同时拥有字符串和数字两种形式。字符串用于显示,数字用于计算和排序。例如,Month字段同时有'1月'到'12月'的字符串和1到12的数值。日期和时间也有类似的处理方式。Qlikview函数在处理过程中考虑了这种二元性,大部分函数都能处理双重格式,而字符串函数则不涉及数字转换。此外,通过设置环境变量定义日期和时间的显示格式。博客通过实例展示了如何使用Month函数和Dual函数来操作和显示数据。

我们学习任何一种编程语言都要知道的是数据类型,但是在qlikview中是不存在数据类型的,这并不是qlikview工具的限制,而是QlikTech公司的有意为之。

背景介绍

在Qlikview工具的设计初期,要求数据源多样化,用户可以从数据库,excel,CSV文件等来获取数据源。这些不同种类的数据源有的存在数据类型,有的却没有数据类型,因此将这些类型统一起来奖是一个非常麻烦的事情。除此之外,为了方便用户使用,在Qlikview的内部函数计算过程中,也不允许有任何数据类型转换的出现。

Dual Format

因此,Qlikview引入了双重格式(Dual format),即Qlikview中数据都具有二元性,每个字段值都有二元性,一个是字符串--用来显示,一个是数字--用来计算和排序。例如month不仅存在'1月’,'2月’…'12月’之类的值用来前台展现,同时也存在1到12的数值用来排序,再比如weekdays不仅存在‘周一’,'周二’…'周日’同时也存在0到6的数值。日期和时间含有类似于“12/31/2019”字符串用来显示,同时也存在对应的数字,事实上这个数字是用来计算自1899年12月30号以来所经历的天数。月,周,天以及时间的显示格式都是在脚本开始的环境变量中提前声明的,如下图所示。

65bf723674526c04325ced4330e60d2b.png

大部分的Qlikview函数都具有二元性,甚至连颜色函数都是如此,但字符串函数却是一个例外,比如Left('String',4),因为没有和该字符串所关联的数字,因此此时与字符串对应的数值部分以空值填充(这句话怎么理解呢,别着急,下面Dual函数部分会举例详解滴。。。)。

Qlikview函数的处理过程举例:Month(date),函数取date的数值进行运算,然后返回表示月份的数值。

数据二元性举例:

SET ThousandSep=',';
SET DecimalSep='.';
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='¥#,##0.00;¥-#,##0.00';
SET TimeFormat='h:mm:ss';
SET DateFormat='YYYY/M';
SET TimestampFormat='YYYY/M/D h:mm:ss[.fff]';
SET MonthNames='一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月';
SET DayNames='周一;周二;周三;周四;周五;周六;周日';
 
YearMonth:
LOAD YearMonth, Month(YearMonth) as Month
INLINE [
    YearMonth
    2013/1
    2013/2
	2013/3
	2013/4
	2013/5
	2013/6
	2013/7
	2013/8
	2013/9
	2013/10
	2013/11
	2013/12
];

注意:上面的代码段中SET DateFormat='YYYY/M';所以inline table中的2013/1才能被识别为日期。进而提前加载中Month函数才会有效。

下面是Month的双格式显示效果,分别用到了Text函数和num函数。

71ceaa344c6602fb73c66e1dc1e6b611.png

Dual函数

dual( s , x )

---s指的是任意的字符串形式的字段,如下面例子中的City_Name字段;

---x指的是任意的数字形式的字段,如下面例子中的City_Num字段;

北上广深杭:
LOAD City_Name as City, dual(City_Name,City_Num) as City_Order  
INLINE [
    City_Name, City_Num
    深圳, 4
    上海, 2
    北京, 1
    广州, 3
    杭州, 5
];

7702aa2f1665188b7e7291d72c66443c.png

上面的代码说明:

1. Part 1用City_Order字段作为列表框的字段可以按照“北上广深杭”的顺序显示城市,但是part 2用city字段作为字段则显示顺序是数据加载的顺序;

2. Part 1的“Dual Function”用的是City_Order字段,则在Num(City_Order)有对应的数字显示,也即是有数字类型被存储;但是part 2用的是city 字段,Num(CIty)显示的则是‘-’,说明此时并没有与之对应的数字类型被存储。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值