Qlik Sense可视化系列 - load scripts中的常用app默认设置
在Qlik sense中创建new app的时候,有很多种方法,最定制化的是load script的方式,不仅仅可以对数据集进行二次处理,自主配置耦合key,还可以对整个app里的各类参数进行整体设置
这里总结一些实践中的常用设置
1. 运行监控时间
LET StartTime = Now();
LET EndTime = Now();
这里用内置函数now() 记录运行时间,赋值给2个变量;这个不算是设置,是实践中的日志
2. 数值格式
SET ThousandSep=',';
SET DecimalSep='.';
千分位符 ThousandSep ,自动对大数值加千分位符号
小数点分隔符 DecimalSep,默认为.
3.金额型字符格式
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$#,##0.00;-$#,##0.00';
在表示金额时,被认为是特殊的格式,标准做法是在前面加上$符号,人民币用¥,千分位符号跟小数点类似
默认格式保留小数点后2位,整数部分至少有一位,没有取0
4. 数值科学表示
SET NumericalAbbreviation='3:k;6:M;9:G;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';
SET format_Number = Num($1/ RangeMin(Pow(10, ((Ceil(Len(Round($1, 1))/3, 1) - 1) * 3)), 1000000000), $2 & '#,##0.00' & Pick(RangeMin(Ceil(Len(Round($1, 1))/3, 1), 4), '', 'K', 'M', 'B'));
NumericalAbbreviation是标准缩写表示,自动根据数值变化
fomat_number可以指定具体的格式:num(expression,格式如 '#.##0,##M' )
5. 月份星期
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
SET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
特殊类定义 FirstWeekDay, FirstMonthOfYear设置
SET FirstWeekDay=6; SET BrokenWeeks=1;
SET FirstMonthOfYear=1;
6.日期时间
SET TimeFormat='h:mm:ss TT';
SET DateFormat='M/D/YYYY';
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
M/D/YYYY 如12/31/2019
7. Table重命名
New_table_name: load * from path.table
load进去的时候,最好统一命名,这样当原始表中的table名字改动,只需要改一下path.table名即可,app里面的expression / set analysis都不用变
8. 存储table
table_name: select * from path.raw_table; Store table_name into table2.qvd; Load * from d_card_txn.qvd (qvd); drop table2
对于大文件,且不需要每次都load的,可以将其存进qvd格式Store into,速度快很多(几十倍?)
load的时候,直接从qvd提取,不重命名则跟存储名字一样,drop table直接删除
Summary
LET StartTime = Now();
SET ThousandSep=',';
SET DecimalSep='.';
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$#,##0.00;-$#,##0.00';
SET TimeFormat='h:mm:ss TT';
SET DateFormat='M/D/YYYY';
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='en-US';
SET CreateSearchIndexOnReload=1;
SET MonthNames='Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec';
SET LongMonthNames='January;February;March;April;May;June;July;August;September;October;November;December';
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun';
SET LongDayNames='Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;Sunday';
SET NumericalAbbreviation='3:k;6:M;9:G;12:T;15:P;18:E;21:Z;24:Y;-3:m;-6:μ;-9:n;-12:p;-15:f;-18:a;-21:z;-24:y';
SET format_Number = Num($1/ RangeMin(Pow(10, ((Ceil(Len(Round($1, 1))/3, 1) - 1) * 3)), 1000000000), $2 & '#,##0.00' & Pick(RangeMin(Ceil(Len(Round($1, 1))/3, 1), 4), '', 'K', 'M', 'B'));
###############################
# Main load scripts
###############################
LET EndTime = Now(); // Output File On Completed Run LET vDate= (YEAR(Today())*10000+MONTH(TODAY())*100+DAY(Today())); Complete: LOAD * inline [ App name
Start Time : $(StartTime)
End Time : $(EndTime) ]; Store Complete into $(path)_$(vDate)_name.txt (txt); Drop Table Complete;

浙公网安备 33010602011771号