QlikView中文教程v8part2CREATING+A+DOCUMENT.docx
《QlikView中文教程v8part2CREATING+A+DOCUMENT.docx》由会员分享,可在线阅读,更多相关《QlikView中文教程v8part2CREATING+A+DOCUMENT.docx(23页珍藏版)》请在冰豆网上搜索。
QlikView中文教程v8part2CREATING+A+DOCUMENT
QlikViewTutorialV8
创建文件
CREATINGADOCUMENT
第十一课将数据加载进QlikView
LESSON11LOADINGDATAINTOQLIKVIEW
QlikView通过来自于一个或若干个数据源的重组数据来创建文件的.例如,来自于一个关系数据库或是包含数据表的文本文件.这个是通过书写和执行一个脚本来获取到在数据库中的表和字段.脚本能够产生导致自动地和工具包含进QlikView.注意在QlikView中没有数据库;因而它,没有可能来添加新数据到数据库中或是通过QlikView来改变数据库中的数据.
在这节课,你将创建由一个数据表组成的简单文件.
观察已定界文本文件
Lookingatadelimitedtextfile
最简单的方式将数据表存储进文本文件中.这种模式的文件,每一行表示一个记录,字段(栏位)使用符号来区分.例如,逗号(或是分号,以tab键间隔,等等).字段名在第一行存储.在例子中将使用的文件类型是csv(逗号分离值)文件,使用逗号定义每个值.你将通过观察文本编辑工具中的csv文件来开始:
1开始自一个文本编辑工具.例如,记事本.
2打开..\Tutorial\Application\DataSources路径下的文件Country1.csv.
文件中的国家逻辑上是一个表,在那里的每一行,或记录,代表一个国家及其属性.栏位通过逗号来分离,首行包含了栏位(字段)名.
3关闭文本编辑工具.
逗号分隔值文件和文本文件通过其他定义符号,例如使用tab键分隔或是分号,通常也能够导入和导出自电子表格程序.例如:
Excel.如果你有一个电子表格程序,当创建表格的时候它能够比文本编辑工具更易于操作.
注意,QlikView对于Excel文件(.xls)就像对待文本文件那样,意思是,你能够立即装载它们进脚本而不通过其他格式保存它们.
装载文本文件
Loadingthetextfile
当装载文件进QlikView时,首先要做的事就是创建一个空白的文件.
1启动QlikView.
2在文件菜单或是工具栏上选择New.
3保存QlikView文件进..\Tutorial\Application文件夹.名称就像MyApplication.qvw.
接下来要做的就是创建一个用于指定加载文件的脚本:
4在文件菜单或是工具栏上选择EditScript.
打开EditScript对话框.在对话框中脚本将被创建.每行开始时的SET表明在脚本编辑框右上部分中已经准备好的脚本.左侧Statements下的每个声明通过设置框来表明右侧的每一行SET脚本.在对话框的底部你将找到一行包含了能产生脚本的功能.
5选择DataFromFiles下的TableFiles...按钮.打开本地文件对话框,浏览你希望载入的文件.确保文件类型:
AllTableFiles(所有表格文件).
6找到文件Country1.csv(之前你使用文本编辑工具打开过),选取它然后点击Open.现在TableFilesWizard已经将文件打开,它将文件内容解释出来并帮助你的脚本通过正确的方式来载入数据.
TableFilesWizard将文件解释为使用逗号分隔(划分),ANSI字符设置的文件.这是比较合适的解释.除此之外,文件是能够嵌入标记的,意思是首行包含字段名,当在文本框中,你发现这同样是正确的:
Country,Capital等等,都是真实的字段名.最后,缺少头部字段信息的文件其头部字段信息将使用处在第一行的字段内容来代替.
7到目前为止,程序已经完成了文件正确的解释,你可以点击Finish.
8在EditScript对话框中产生类似脚本:
LOADCountry,
Capital,
[Area(km.sq)],
[Population(mio)],
[Pop.Growth],
Currency,
Inflation,
[OfficialnameofCountry]
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\Country1.csv](ansi,txt,delimiteris',',embeddedlabels,msq);
研究脚本.注意它的语法,LOAD和FROM均被高亮显示.说明它们是关键字,在QlikView脚本中有特殊的含义.你可以通过Settings菜单下的Configure...(EditScript对话框下)来改变颜色.获取更详尽的帮助请参见ReferenceManual.
装载后,选取文件的这些字段会被列表化.其中一些字段名使用方括号;当一个字段名包含空格时这是必要的措施.关键字FROM后跟随了文件的路径.在教程中我们使用相对路径,意思是将显示位置(文件夹)和文件名Country1.csv.
最后括号包含了文件的附加信息,具体说明使用ANSI字符设置(Windows文件标准),那个文件是文本文件,使用逗号来分离字符,首行包含字段名.你能从文件中认出它们.
9为了一直保存你脚本的改变(仍旧在EditScript对话框中),在你试图重载它之前,它是很好的习惯.如果重载不能成功,那个方法使你很容易地退回和做一些改变.
10点击Reload按钮.
11现在数据已经装载进QlikView,出现了一个包含可能被选取用来显示字段的对话框.
12选取AvailableFields下的字段Area(km.sq.),Capital,Currency和Population(mio)到FieldsDisplayedinListboxes下.以'$'开头的字段名是系统字段(只有选中ShowSystemFields它们才会出现)
13点击OK,关闭对话框.所有被选取的字段在QlikView面板中以列表的形式展现.
如果你想添加或删除字段,你可以在任何时候打开面板的Properties对话框进行操作.
14点击列表Capital下的一个首都,你将发现在其他列表中关联显示的信息,举个例子国家使用的货币(Currency).注意所有的涉及到国家的信息,到目前为止表中的每一个被装载的记录代表了一个国家.因此在巴黎(Paris)上点击并不表明你将得到巴黎的人口数量.它仍是作为法国的人口数来显示.
15清除你之前的选取操作.
相对路径和绝对路径
Relativepathsandabsolutepaths
在教程中我们使用相对路径,意思是QlikView将通过文件相对与当前QlikView文件存储的位置.
为了使用相对路径,需要选中EditScript对话框中的DataFromFiles下的RelativePaths.也可以直接在脚本中改变路径.
一个相对路径的例子:
..\Application\DataSources
在QlikView脚本中目录声明之前,声明使用相对路径.学习更多有关目录声明的内容,请参见ReferenceManual.
绝对路径,是另一种写法,给出了正确详细的文件位置.如果你将文件移动到另一个位置(例如,移到用户目录或是其他的硬碟上),程序将不能找到相关的文件并执行脚本.
一个绝对路径的例子:
C:
\DocumentsandSettings\Desktop\Application\DataSources
保存,关闭和退出
Saving,closingandexiting
第十二课主题
LESSON12THEMES
主题是很有用的,因为你只需要创建一次布局,然后将它拷贝到任意一个文件中.基本的思想就是从一个已存在的QlikView文件及其面板对象'提取出'布局设置到主题文件,然后将相同的设置赋予新的文件,使用ThemeMakerWizard.
创建主题
Creatingatheme
现在你将创建一个非常基础的布局主题,包含面板背景和列表的布局设置.
1打开文件Tutorial.qvw,你已经在教程的第一部分使用过它.这个文件包含了所有你的新文件需要的布局设置.首先你希望在每个面板的首部显示商标,并且你希望标签是绿色的.
2选取文件菜单Layout-ThemeMakerWizard.
3点击Next>到达Step1-Selectthemefile.
4确定选中NewTheme,然后点击Next>.打开另存为对话框.
5文件名填入MyTheme.qvt然后将它保存在..\Tutorial\Application文件夹下.
6在Step2下Source处下拉选取Document.PropertyGroups下ObjectTypeSpecific是默认选取的.点击Next>.
7选中DocumentBackground和SheetObjectStyles,取消其他的选取.点击Next>.
8在最后一个页面,选中Setasdefaultthemeforthisdocument.点击Finish来保存主题,关闭对话框.
现在你将已经创建了一个非常基础的布局主题,包含面板背景和列表的布局设置.现在你希望添加面板标签为绿色.
9再次打开ThemeMakerWizard.在Step1-Selectthemefile下选中ModifyExistingTheme.在下拉列表中你最新创建的主题是被建议选取的.选取它.点击Next>.
10在Step2-SourceSelection下Source处下拉选取SheetDocument\SH01-Geography.PropertyGroups下ObjectTypeSpecific是默认选取的.点击Next>.选中SheetBackground和Sheettab.点击Next>.
11在Step3a-Objecttypespecificproperties,点击Next>,点击Finish.
从面板已经选取的布局设置现在已经添加进主题了.现在你希望为主题带有添加绿色标题的列表.
12再次打开ThemeMakerWizard.打开你的主题,然后到Step2-SourceSelection.
13在Source下,选取一个列表作为当前标题颜色的参照.在本案中你选取ListBoxDocument\LB01-Country.选中PropertyGroups下ObjectTypeSpecific,Caption和Border.点击Next>.来自列表的布局设置现在已经添加进主题中.
14点击Next>直到到达Step4-Insertionofpropertiesintheme.这里你可以选取希望赋予相同标题和边框设置的对象.在主题中不包含按钮,文本对象和线条/箭头对象,这是个好主意-你也许希望为它们使用不同的布局.
15点击Next>达到对后一页.不做任何改变.点击Finish.
16现在你已经完成创建主题的任务.关闭文件Tutorial.qvw.
为文件应用主题
Applyingathemetoadocument
1打开文件MyApplication.qvw.你在之前的教程中已经创建了.
2选取文件菜单Settings-DocumentProperties,切换到Layout页.
3点击ApplyTheme...按钮,然后浏览你的主题,召唤MyTheme.qvt.点击Open.主题现在被应用到你的文件:
面板标签为绿色,出现了QlikView的商标,所有列表的标题转变成绿色.
在任何时候你可以撤销和修改你的主题.你也许希望为其他的面板对象添加布局属性,例如,图表或是按钮.你能够经常地如你所想的在自己的文件上应用主题.为了解更多有关主题的信息,请参见ReferenceManual.
保存,关闭和退出
Saving,closingandexiting
第十三课联合多个表的数据
LESSON13ASSOCIATINGDATAFROMMANYTABLES
在前面的课程中,你通过装载一个表到QlikView中创建了一个基本文件.然而,你通常希望从较大数量的表中装载和关联数据.在这次课你将熟悉使用QlikView的方法自动地将有关联的表联合起来.你也能够学到如何重命名字段来保证或是阻止自动联合的发生.
联合
Associations
如果你有两个表它们分别列出不同的东西.例如,如果一个列出所有顾客另一个列出所有发票,这两个表有一个公共的字段(栏位).例如,顾客号码.这通常表明那两个表存在一个关联.
如果存在这样一个关联,在表与表间的公共字段能够联合这些表:
QlikView假定那两个字段代表相同的事物,同时这两个字段被视为一个.这样一个被称作关键匙的字段连接了两个或是更多的表.
这有两个联合的基本规则:
1为了联合两个字段,它们需要有完全相同的名称(区分大小写).因此Name和name不同,不能联合.
2如果确定在多个不同的已装载表的字段中有完全相同的值,QlikView将它视为一个值,同时也假定将要联合那些记录(行)包含的值.为了联合两个字段的值,它们其中任意一个需要
-有完全相同的拼写(区分大小写),或者
-有正好相同的数字值
因此:
Name和name不同,不能联合.数字123和00123相同,可以联合.
为更好地证明基本规则,学习下面的例子:
Forafurtherillustrationofthebasicrules,studythefollowingexample:
Table1:
Table2:
Table3:
NameNumberNumberAgeNameID
John1328Philab
Phil2435johnxy
Betty5242
字段名Number参照第一个规则被假定是一个相同的名称.Table1和Table2通过这个字段来联合.Table1和Table3也通过字段名称来联合.
在Table1和Table2字段Number中都有值2,说明Phil被假定与Age42联合.
Table1中字段Number的值2和Table3中字段ID的值ab,是通过字段Name的值Phil来联合的.Table1中字段Name的值John,因为Table3中相应字段没有相同的值,所以那里不会联合.
称为联合,意思是在不同表中的字段间建立连接,所以逻辑上的连接是有意义的.这个方法将若干个来自一个或多个数据库中的表,逻辑上同时包含进QlikView中.
打开文档
Openingthedocument
1启动QlikView.
2打开MyApplication.qvw.
装载和联合第二个表
Loadingandassociatingasecondtable
你的文件包含一个表用以显示国家-详情的资料.在这次课,你将装载一个附加表展现一个顾客列表.国家表和顾客表将通过公共字段Country来联合.顾客开始注册进不同的国家,国家属性和顾客键的关系是有意义的,就像联合结果表现的那样.
新表来自一个Excel文件,但是你不能使用和文本文件相同的方式来装载它.
1在文件菜单或是工具栏上选择EditScript.
2将光标放到脚本编辑框Main的尾部.
3选择DataFromFiles下的TableFiles...按钮.
4选取..Tutorial\Application\DataSources文件夹下的Customer.xls,然后点击打开.
5注意此时Type下已默认选中了ExcelFiles(BIFF),Table下包含了工作表的名称.这个Excel文件只包含一个工作表;如果包含多个工作表或是已命名的表格,Table的下拉列表会给出相应的名称以供选取.点击Finish.在EditScript对话框中产生类似脚本:
LOADCountry,
Capital,
[Area(km.sq)],
[Population(mio)],
[Pop.Growth],
Currency,
Inflation,
[OfficialnameofCountry]
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\Country1.csv](ansi,txt,delimiteris',',embeddedlabels,msq);
LOAD[CustomerID],
Customer,
Address,
City,
Zip,
Country
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\CUSTOMER.xls](biff,embeddedlabels,tableis[CUSTOMER$]);
研究脚本.你发现Country1.csv和Customer.xls都包含Country这个字段.符合上文中联合规则的描述,QlikView将会通过这个字段来联合这两个表.
6点击Reload按钮.
7现在出现了一个包含可能被选取用来显示字段的对话框.除了Country,所有来自文件Customer.xls的字段已经被添加到AvailableFields下.字段Country将通过相同的字段名来联合预先装载的字段.
8选取AvailableFields下的字段Customer和Country到FieldsDisplayedinListboxes下.
9点击OK.
10保存你的文件.
现在点击列表Capital中的一个首都,查找居住在这个国家首度的顾客;同时在顾客注册表里查找.这是有可能的,尽管Customer和Capital在不同的表中.只有具备先决条件的字段,Country,在两个表之间通用.
11点击列表Capital中的Alma-Ata,哈萨克斯坦的首都,注意虚构的公司在哈萨克斯坦拥有两个顾客.
12清除你之前的选取操作.
现在你建立了一个简单的QlikView文件包含来自两个表的数据.多个表能够通过这种方式被连接(联合),在多个表的数据中学习产生复杂的关系.
重命名字段
Renamingfields
在前面的部分,你学习了通过制造被称为关键匙的公共字段来联合表.就像我们看到的,两个字段联合的标准(被视为一个相同的字段)是它们拥有相同的名称.
因此就变成清除字段名显得十分重要,并且当建立QlikView数据结构时重命名字段是通用的过程:
在现实生活中,字段应该被联合而不需要在不同的表中一直有完全相同的名称.除此之外,你不希望联合可能名称相同的字段.在创建QlikView文件时重命名字段能够阻止或是创造联合,这是非常重要的部分.
目录包含附加的字段(表),那是与你的文件相关的.你希望联合文件Transact.csv,一个文件包含关于交易的信息,销售,等等.在文件中关于顾客:
1在文件菜单或是工具栏上选择EditScript.
2将光标放到脚本编辑框Main的尾部.
3选择DataFromFiles下的TableFiles...按钮.
4选取..Tutorial\Application\DataSources文件夹下的Transact.csv,然后点击打开.
5确保选中Type下的Delimited,Table下包含了工作表的名称.Options下,Labels处下拉选取EmbeddedLabels;Delimiter处下拉选取Comma.
直到现在,你只有认可TableFileWizard对话框给你的设置建议.现在我们将使用一些可能的操作来改变QlikView读取数据文件的方式.
在前面我们装载的文件Customer.xls中,那有一个字段名叫CustomerID.注意新文件包含一个字段名叫IDCustomer.这两个字段应该能够被联合.例如,将他们视为一个.为了达到这个目的,你需要将其中一个字段重命名.
6TableFileWizard对话框对重命名字段提供极好的支持.简单的点击进IDCustomer的表头,然后输入新的名称CustomerID.确保两个词之间的空格没有被遗漏:
任何拼写错误将阻止QlikView解释它们成为一个字段.
7敲击Enter.字段名称被改变.
8点击Finish.
在EditScript对话框中产生类似脚本:
LOADCountry,
Capital,
[Area(km.sq)],
[Population(mio)],
[Pop.Growth],
Currency,
Inflation,
[OfficialnameofCountry]
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\Country1.csv](ansi,txt,delimiteris',',embeddedlabels,msq);
LOAD[CustomerID],
Customer,
Address,
City,
Zip,
Country
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\CUSTOMER.xls](biff,embeddedlabels,tableis[CUSTOMER$]);
LOAD[TransactionID],
Year,
Month,
Day,
[SalesmanID],
[ProductID],
[SerialNo],
[IDCustomer]as[CustomerID],
[ListPrice],
Sales,
[GrossMargin]
FROM[C:
\ProgramFiles\QlikView\Tutorial\Application\DataSources\TRANSACT.CSV](ansi,txt,delimiteris',',embeddedlabels,msq);
注意行[IDCustomer]as[CustomerID]:
这是刚才设置的结果,说明字段IDCustomer使用名称CustomerID装载进QlikView(如此可以保证必要的联合).
9点击Reload按钮.
10出现了SheetProperties对话框.选取AvailableFields下来自于文件Transact.csv的字段到FieldsDisplayedinListboxes下.例如,Sales.
11点击OK.
12保存你的文件.
已经装载了三个不同的表,分别包含关于国家,顾客和交易.通过使用已描述的方式来联合表,QlikView允许你在同一时刻查询所有表