Qlikview Data Modeling---Concatenation

这篇Blog主要介绍下通过Concatenation(串联) 事实表来避免loops 和 synthetic keys:

Qlikview里的建模通常都是是很简单的。通常我们只要重新命名一些子段的名字来防止或者建立表之间的自动关联。

但是有时候我们只是通过简单的重命名是解决不了问题的。例如我们有多个事实表和其他的表有多个关联,这样通常会产生可怕的

synthetic key,更可怕的是会产生data loop(闭环).Qlikview的data modeling千万不能有data loop。

要建立一个好的数据模型在Qlikview里是和通常的关系型数据库建模是有很大的区别的。用QLIKVIEW进行建立模型和维度模型很相似。根据数据的复杂性,有时候需要用混合型的建模方法。当然QLIKVIEW是很支持此类建模的。

今天我们来一起见证下Qlikview是如何处理这类复杂的关联的。

Concatenation of fact tables to avoid loops and synthetic keys

下面是一个例子 :

Store:

Load * Inline [

StoreID, StoreName

1, Store A

2, Store B

];

Calendar:

Load MonthID As DateID, Month Inline [

MonthID, Month

1, Jan

2, Feb

];

Product:

Load * Inline [

ProductID, Product

1, Product A

2, Product B

];

Sales:

LOAD * INLINE [

DateID, StoreID, ProductID, SaleQty, SaleValue

1, 1, 1, 2, 23

1, 1, 2, 4, 24

2, 1, 1, 4, 33

2, 1, 2, 3, 28

1, 2, 1, 2, 21

1, 2, 2, 4, 30

2, 2, 1, 3, 25

];

Waste:

LOAD * INLINE [

DateID, StoreID, ProductID, WasteQty, WasteValue

1, 1, 1, 1, 10

2, 1, 2, 1, 9

1, 2, 2, 2, 17

2, 2, 2, 1, 8

];

从下面的数据模型架构可以看出qlikview为我们自动产生了一个 synthetic key.从下面的图可以看出Sales和Waste共享同样的key set(StoreID,DateID,ProductID). 这种情况我们就可以通过concatenate去消除此key set.

修改waste表的加载方式如下:

//Waste:

Concatenate (Sales)

LOAD * INLINE [

DateID, StoreID, ProductID, WasteQty, WasteValue

1, 1, 1, 1, 10

2, 1, 2, 1, 9

1, 2, 2, 2, 17

2, 2, 2, 1, 8

];

Reload  the Script

重新查看试图查看器:

这个时候synthetic key消失了。

这个时候Sales表里包含了两个表的信息,但是他们是在不同的行。

注意:

1,当两个事实表共享同样的相同个数的(key set)键集合的时候,concatenation应该是首选方案去避免qlikview自动的创建synthetic key.

2,concatenate 相当于把两个小表合并成一个大表,此大表包含2个表的所有子段列,和所有的行信息。同时做了横向和纵向的扩展。

3,QIikview 在做计算的时候是直接忽略null值的。即在qlikview的表达式里存在NULL的行做运算的时候,qlikview直接忽略它,其他的非NULL的值可以做运算。但是在SQL SERVER里如果有NULLL的参与运算的时候,结果肯定是NULL。







时间: 2024-10-10 18:55:08

Qlikview Data Modeling---Concatenation的相关文章

Data Modeling for MVC Applications

原文: Data Modeling for MVC Applications 模型-视图-控制器(MVC)是程序开发的主流范式.我们来看看Dojo为开发MVC的应用提供了些什么.我们将学习如何利用Dojo的stores对象与为模型提供的状态对象,以及如何在模型级别之上建立模型化的视图与控制器. MVC应用的数据模型 MVC是应用开发的主流范式.MVC为使代码有组织性,易管理性对关注点做了分层.Dojo是重度基于MVC法则的,并为构建MVC架构的应用提供了强大的帮助.一个设计良好的MVC应用的基石

Qlikview Data Modeling---创建一个Key/Link Table

这一篇我们将来学习下在什么情况下需要在QlikView里创建一个Key或者Link Table来避免事实表loops 和 qlikview自动产生synthetic keys.当两个事实表共享同样的键集合的时候,concatenation应该是首选方案去避免qlikview自动的创建synthetic key. 然而,如果一个事实表的比另外一个事实表的key键多,而且多出的key键值和另外一个事实表没有关联,这个时候创建一个key table去连接这些键值的方案就更加适合. In this

Data Modeling

Data Model Salesforce的数据模型类似于数据库对数据的组织形式 In Salesforce, we think about database tables as objects, we think about columns as fields, and rows as records. Objects Salesforce supports several different types of objects. There are standard objects, cust

EA Data Modeling 显示别名设置

1.设置 2.效果 

MySQL vs. MongoDB: Choosing a Data Management Solution

原文地址:http://www.javacodegeeks.com/2015/07/mysql-vs-mongodb.html 1. Introduction It would be fair to say that as IT professionals we are living in the golden age of data management era. As our software systems become more complex and more distributed,

Core Data 学习:轻量级版本迁移(Lightweight Migration)

什么时候需要版本迁移呢? 答案很简单,什么时候改变数据模型,什么时候就需要版本迁移. Core Data支持对数据模型(data model)改变的管理.改变数据模型将造成该数据模型与之前的持久化存储(stores)不兼容,而出现错误.所以,如果我们改变了自己的数据模型,就需要将原有的持久化存储中的数据转移到新的模型版本,这一过程就称为版本迁移(migration). 为什么需要进行版本迁移? 当我们发布应用之后,再添加一些新的特性,我们将需要更新持久化存储.在我们开发的过程中,很好操作,删除A

My journey introducing the data build tool (dbt) in project’s analytical stacks

转自:https://www.lantrns.co/my-journey-introducing-the-data-build-tool-dbt-in-projects-analytical-stacks/ Not sure I remember how, but I had the good luck a few weeks ago to stumble upon posts from Tristan Handy where he mentioned a tool his team built

数据挖掘——Data competition: From 0 to 1: Part I

Data competition: From 0 to 1: Part I 1. Data competition Introduction 2. Example: Credit Fraud Detector EDA(Exploratory Data Analysis) Why taking log transformation of continuous variables? Outliers Detection Unbalance Metrics Resampling Cross-valid

[it-ebooks]电子书列表

#### it-ebooks电子书质量不错,但搜索功能不是很好 #### 格式说明  [ ]中为年份      ||  前后是标题和副标题  #### [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/ Learning Web App Developmen