OLAP免费

目录

一步一步的免费OLAP

源数据样本(Tableau Superstore摘录)

简单的分析查询

查询1结果(不包括所有数据)

查询2

查询2结果(不包括所有数据)

月季度

年初至今的月份季度

移动年度总月季度

结果多维数据集

结论


一步一步的免费OLAP

在本文中,我将展示如何完全免费实现OLAP。您不必为MSASCognos等花费一分钱。如果您查看OLAP系统的价格,您会发现它们将花费数万美元,不包括每个报告用户的年费。另一方面,硬件现在很便宜,并且有很多免费的数据库。在许多情况下,对于中型项目,购买RADHDD并以牺牲硬件资源为代价来解决问题会更容易。

OLAP多维数据集生成器将表格数据作为输入,并生成具有聚合数据的特殊格式的多维数据集文件。如果我们采用表格数据,将它们聚合在SQL Server数据库中并将它们反向放入SQL Server表中,该怎么办?我将使用Tableau superstore文件作为示例的数据源。该文件可在Tableau论坛上访问。超级文件

我改变了一下。我用`替换了引号和省略号。并替换了标题中下划线符号的空格和短划线。我还添加了2年的发货日期,只需2018年和2019年。所有OLAP查询都返回大量数据集,因此我只提供一段摘录而不是所有数据来了解数据结构。如果您想要所有数据,请自行运行。我把YearMonthQuarter分别作为一个单独的列。我还在日期格式中添加了Shipment月份。所有这些都使SQL查询更简单。

源数据样本(Tableau Superstore摘录)

您可以使用SQL脚本生成我使用的完整表。文章开头代码中的​​insert_script脚本

最原始的分析查询看起来像这样......

简单的分析查询

SELECT
State,
Ship_Year,
Ship_Month,
Category ,
sum(Sales) as SumSales,	  
sum(Quantity) as SumQuantity,
sum(Profit) as SumProfit	
FROM  tblSales
GROUP BY State, Category , Ship_Year, Ship_Month

此查询的结果是按州按类别按月销售集合。

查询1结果(不包括所有数据)

State

Ship_Year

Ship_Month

Category

SumSales

SumQuantity

SumProfit

Alabama

2018

9

Furniture

350.98

1

84.2352

Alabama

2019

10

Furniture

10.16

2

3.4544

Alabama

2019

12

Furniture

141.96

2

35.49

Alabama

2018

5

Office Supplies

4.98

1

2.4402

Alabama

2018

6

Office Supplies

247.65

9

75.6134

Alabama

2018

8

Office Supplies

197.05

7

59.115

Alabama

2018

9

Office Supplies

913.16

6

123.0272

Alabama

2018

10

Office Supplies

88.86

12

37.9872

Alabama

2018

11

Office Supplies

269.77

22

117.3024

Alabama

2019

1

Office Supplies

56.37

16

23.1341

Alabama

2019

4

Office Supplies

492.18

7

16.4172

Alabama

2019

5

Office Supplies

26.16

4

12.8184

Alabama

2019

6

Office Supplies

16.24

4

6.7064

Alabama

2019

12

Office Supplies

728.8

10

349.281

Alabama

2018

6

Technology

979.95

5

274.386

Alabama

2018

7

Technology

29

2

7.25

Alabama

2018

10

Technology

209.97

3

71.3898

Alabama

2018

11

Technology

4359.96

12

1987.184

Alabama

2019

4

Technology

25.98

2

1.5588

Alabama

2019

11

Technology

239.92

8

23.992

Alabama

2019

12

Technology

90.48

2

23.5248

Arizona

2018

2

Furniture

14.368

2

3.9512

Arizona

2018

4

Furniture

2229.726

15

-702.3924

Arizona

2018

5

Furniture

111.888

7

22.3776

Arizona

2018

9

Furniture

393.165

3

-204.4458

Arizona

2018

10

Furniture

477.488

7

-34.641

Arizona

2018

12

Furniture

455.97

6

-218.8656

Arizona

2019

1

Furniture

83.413

3

-19.9054

Arizona

2019

2

Furniture

455.614

11

-169.3996

Arizona

2019

5

Furniture

209.979

7

-356.9643

Arizona

2019

6

Furniture

280.792

1

35.099

Arizona

2019

7

Furniture

1275.144

10

-481.6947

Arizona

2019

8

Furniture

120.576

8

33.1584

Arizona

2019

11

Furniture

1126.592

8

-141.8228

Arizona

2019

12

Furniture

1033.47

9

-27.8676000000001

要按月计算OLAP多维数据集,我们必须稍微更改此查询。源多维数据集包含层次结构。

  • 地理层次结构:国家 ->地区 -> ->城市
  • 产品层次结构:分类-> 子类-> 产品
  • 期间:月,季度

让我们将层次级别字段添加到每个维度(geographyproductperiod)中,以明确标识层次级别。

查询2

SELECT
'State'  as GeoLevel,
State as Geo,
Ship_Year as SaleYear,
Ship_Month as SalePeriod,
max(Ship_MonthDate) as SalePeriodDate,
DATEADD(month, -1, max(Ship_MonthDate)) as PrevSalePeriodDate,
'M' as PeriodType,
'M' as PeriodSubType,
'Category' as ProductLevel,
Category as ProductName,
sum(Sales) as SumSales,	  
sum(Quantity) as SumQuantity,
sum(Profit) as SumProfit	
FROM  tblSales
GROUP BY State,  Category ,  Ship_Year, Ship_Month

查询2结果(不包括所有数据)

Geo
Level

Geo

Sale
Year

Sale
Per
iod

Sale
Period
Date

Prev
Sale
Period
Date

Per
iod
Type

Per
iod
Sub
Type

Product
Level

Product
Name

Sum
Sales

Sum
Quan
tity

Sum
Profit

State

Alabama

2018

9

01.09.2018

01.08.2018

M

M

Category

Furniture

350.98

1

84.2352

State

Alabama

2019

10

01.10.2019

01.09.2019

M

M

Category

Furniture

10.16

2

3.4544

State

Alabama

2019

12

01.12.2019

01.11.2019

M

M

Category

Furniture

141.96

2

35.49

State

Alabama

2018

5

01.05.2018

01.04.2018

M

M

Category

Office Supplies

4.98

1

2.4402

State

Alabama

2018

6

01.06.2018

01.05.2018

M

M

Category

Office Supplies

247.65

9

75.6134

State

Alabama

2018

8

01.08.2018

01.07.2018

M

M

Category

Office Supplies

197.05

7

59.115

State

Alabama

2018

9

01.09.2018

01.08.2018

M

M

Category

Office Supplies

913.16

6

123.0272

State

Alabama

2018

10

01.10.2018

01.09.2018

M

M

Category

Office Supplies

88.86

12

37.9872

State

Alabama

2018

11

01.11.2018

01.10.2018

M

M

Category

Office Supplies

269.77

22

117.3024

State

Alabama

2019

1

01.01.2019

01.12.2018

M

M

Category

Office Supplies

56.37

16

23.1341

State

Alabama

2019

4

01.04.2019

01.03.2019

M

M

Category

Office Supplies

492.18

7

16.4172

State

Alabama

2019

5

01.05.2019

01.04.2019

M

M

Category

Office Supplies

26.16

4

12.8184

State

Alabama

2019

6

01.06.2019

01.05.2019

M

M

Category

Office Supplies

16.24

4

6.7064

State

Alabama

2019

12

01.12.2019

01.11.2019

M

M

Category

Office Supplies

728.8

10

349.281

State

Alabama

2018

6

01.06.2018

01.05.2018

M

M

Category

Technology

979.95

5

274.386

State

Alabama

2018

7

01.07.2018

01.06.2018

M

M

Category

Technology

29

2

7.25

State

Alabama

2018

10

01.10.2018

01.09.2018

M

M

Category

Technology

209.97

3

71.3898

State

Alabama

2018

11

01.11.2018

01.10.2018

M

M

Category

Technology

4359.96

12

1987.184

State

Alabama

2019

4

01.04.2019

01.03.2019

M

M

Category

Technology

25.98

2

1.5588

State

Alabama

2019

11

01.11.2019

01.10.2019

M

M

Category

Technology

239.92

8

23.992

State

Alabama

2019

12

01.12.2019

01.11.2019

M

M

Category

Technology

90.48

2

23.5248

State

Arizona

2018

2

01.02.2018

01.01.2018

M

M

Category

Furniture

14.368

2

3.9512

State

Arizona

2018

4

01.04.2018

01.03.2018

M

M

Category

Furniture

2229.726

15

-702.3924

State

Arizona

2018

5

01.05.2018

01.04.2018

M

M

Category

Furniture

111.888

7

22.3776

State

Arizona

2018

9

01.09.2018

01.08.2018

M

M

Category

Furniture

393.165

3

-204.4458

State

Arizona

2018

10

01.10.2018

01.09.2018

M

M

Category

Furniture

477.488

7

-34.641

State

Arizona

2018

12

01.12.2018

01.11.2018

M

M

Category

Furniture

455.97

6

-218.8656

State

Arizona

2019

1

01.01.2019

01.12.2018

M

M

Category

Furniture

83.413

3

-19.9054

State

Arizona

2019

2

01.02.2019

01.01.2019

M

M

Category

Furniture

455.614

11

-169.3996

State

Arizona

2019

5

01.05.2019

01.04.2019

M

M

Category

Furniture

209.979

7

-356.9643

State

Arizona

2019

6

01.06.2019

01.05.2019

M

M

Category

Furniture

280.792

1

35.099

State

Arizona

2019

7

01.07.2019

01.06.2019

M

M

Category

Furniture

1275.144

10

-481.6947

State

Arizona

2019

8

01.08.2019

01.07.2019

M

M

Category

Furniture

120.576

8

33.1584

State

Arizona

2019

11

01.11.2019

01.10.2019

M

M

Category

Furniture

1126.592

8

-141.8228

State

Arizona

2019

12

01.12.2019

01.11.2019

M

M

Category

Furniture

1033.47

9

-27.8676000000001

State

Arizona

2018

3

01.03.2018

01.02.2018

M

M

Category

Office Supplies

272.318

9

17.1947

State

Arizona

2018

4

01.04.2018

01.03.2018

M

M

Category

Office Supplies

396.813

20

-32.6021

State

Arizona

2018

7

01.07.2018

01.06.2018

M

M

Category

Office Supplies

95.424

13

-30.1926

在进一步的操作中,我将使用JavaScript生成的动态SQL。让我们参数化查询2以展开所有级别的层次结构(地理位置,产品和期间)。我使用JavaScript here-docs进行模板化和变量插值。感谢上帝,它现在支持here-docs,并且没有必要在这里处理Perl文档。我们必须生成所有层次结构成员的笛卡尔积,并计算其度量聚合。

月季度

要生成SQL,请将JavaScript代码复制到HTML文件并使用Chrome打开它。在SQL Server Management Studio中运行它之前,请为季度算术创建一个标量函数dbo.prevQuarter

月季度生成脚本sales_M_Q.html 

月季度(res_mq.zip)查询结果生成脚本sales_M_Q.html

SQL Server management studio 中创建由此脚本生成的视图(最后UNION ALL应删除),它为您提供了一个事实数据表形式的OLAP多维数据集,其中包含所有层次结构的层次结构。请注意,如果您遇到同一项目city同时处于两个具有相同名称的状态的情况,则必须像在脚本中那样使其独一无二。销售数据的性质不允许在多个类别中拥有相同的产品。所以当我们扁平化层次结构时没有问题。否则,我们必须存储具有分组路径的单独字段。

对于季度期间,我将季度存储在datemonth字段中。为了计算上一季度,我使用UDF dbo.prevQuarter进行季度数学运算。

年初至今的月份季度

要计算YTD期间,我们必须在额外周期中循环处理所有12个月。为了删除大于当前时间段的期间,where部分datefromparts( Ship_Year, ${xmonth}, 1) <= datefromparts(year(GETDATE()), month(GETDATE()),1)中有一个额外的条件。

YTD月季度生成脚本sales_YTD_M_Q.zip YTD脚本结果(res_ytd.zip)

移动年度总月季度

为了生成MAT,我们的数据库必须有3年的趋势。在我的脚本中,我只取了一个去年的数据。我遍历列表中的所有时段并计算12个月的聚合。这种情况与YTD脚本${xperiod} <= datefromparts(year(GETDATE()), month(GETDATE()),1)中的情况相同,可以缩短未来的周期。和以前的脚本一样,我在month字段上存储季度。这将允许进一​​步计算PPG%。MAT脚本sales_MAT_M_Q.zip 
MAT脚本结果(res_mat.zip)

结果多维数据集

生成所有3个查询后,您可以创建结果查询并执行SELECT INTO tblCube。然后,您可以在维度上添加一些索引以提高性能。

select * from [cubeq].[CUBE_Sales_M_Q]
UNION ALL
select * from [cubeq].[CUBE_Sales_YTD_M_Q]
UNION ALL
select * from [cubeq].[CUBE_Sales_MAT_M_Q]

结论

这种方法允许使用昂贵的系统免费计算销售分析。

INSERT脚本大约3MB。生成的多维数据集为31MB。这是10倍的增长。这是因为组合数据爆炸。

在其他项目中,50 MB平面文件打开500MB SQL Server数据库。对于现代数据库而言,这不是一个重要的卷。

在此阶段,您可以在SSRSMS Report Builder中基于这些数据绘制仪表板。当然,在没有层次结构元信息的情况下,您将受到平面过滤Excel自动过滤方式的限制,但数据将适用于分析。您可以在SQLiteMySQL或任何免费数据库中执行相同的操作。

我在两个销售分析项目中使用了这种方法,效果很好。首先是制药公司的KPI计算,第二个是B2B应用的报告门户。在以后的文章中,我将展示如何构建免费的OLAP Web应用程序。

 

原文地址:https://www.codeproject.com/Articles/5139754/OLAP-for-Free

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一些开源的OLAP数据库,它们都是免费的: 1. Apache Kylin:一个分布式的分析引擎,支持大规模数据集的查询和分析,包括高级OLAP功能和多维分析。 2. Druid:一个高性能的分布式列式存储,设计用于快速查询和分析大规模的实时和历史数据。 3. Palo:一个分布式的OLAP数据库,可处理PB级别的数据,并支持SQL查询、多维分析、数据切片和切块等功能。 4. Mondrian:一个Java基于的OLAP引擎,支持多维分析、查询和报表生成。 5. Apache Pinot:一个实时分析数据库,旨在处理大规模的数据集,支持快速查询和高级分析。 这些OLAP数据库都是开源的,可以免费使用,并且都具有强大的功能和性能。选择哪个OLAP数据库应该基于您的需求和具体的使用情况来确定。 ### 回答2: 开源OLAP数据库是一种允许用户自由使用、修改和分发的OLAP数据库软件。以下是几个推荐的免费开源OLAP数据库: 1. Mondrian:Mondrian 是一种开源的、基于Java的OLAP引擎,它支持多维数据分析查询和报告功能。由于其开源性质,用户可以根据自己的需求进行定制和扩展。 2. Kylin:Kylin 是一种分布式OLAP引擎,专注于大规模数据处理和高性能查询。它可以与Hadoop集成,支持多维度分析和复杂查询,并提供了强大的数据立方体构建和查询功能。 3. Druid:Druid 是一种数据存储和查询引擎,专为快速分析大规模实时和历史数据而设计。它具有高度可扩展性和低延迟查询的优势,适用于需要实时数据探索和分析的应用场景。 4. Palo:Palo 是一种列式存储数据库,具有快速的多维分析和查询能力。它支持实时数据加载和处理,可以作为Hadoop生态系统的一部分使用。 这些免费的开源OLAP数据库软件都具有不同的特点和适用场景,用户可以根据自己的需求选择最合适的软件进行数据分析和报告。在使用之前,建议用户对每个软件进行深入的了解和测试,以确保其与自身业务和数据的兼容性。 ### 回答3: 开源OLAP数据库是指基于开源许可证发布并允许用户自由使用、修改和分发的OLAP数据库系统。以下是一些推荐的免费开源OLAP数据库: 1. Apache Kylin:Kylin是一个为大规模数据集提供在线分析处理(OLAP)能力的分布式开源项目。它具有高性能和可扩展性,并支持多维数据模型和复杂的OLAP查询。 2. Mondrian:Mondrian是一个基于Java的OLAP引擎,它支持多维数据分析查询。它与关系型数据库(如MySQL、PostgreSQL)和OLAP服务器(如Pentaho)集成,提供灵活的数据分析和报表功能。 3. Apache Druid:Druid是一个实时分析数据库,它可以快速查询大规模数据集。Druid提供了高度可扩展的数据存储、实时数据摄取和OLAP查询功能,适用于对实时数据进行交互式分析。 4. KylinOLAP:KylinOLAP是基于Hadoop和HBase的分布式开源OLAP引擎,适用于海量数据的OLAP分析。它具有高性能和低延迟,支持多维数据模型和复杂的OLAP查询。 这些免费的开源OLAP数据库具有不同的特点和适用场景,可以根据具体需求选择适合的数据库。开源数据库通常具有较高的灵活性和可扩展性,并且社区活跃,可以获得及时的技术支持和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值