标签: olap

数据库仓库设计:事实表和维度表

我正在使用RDBMS构建一个穷人的数据仓库.我已经确定了要记录的关键"属性":

  • 性别(真/假)
  • 人口统计分类(A,B,C等)
  • 出生地
  • 出生日期
  • 体重(每日记录):正在记录的事实

我的要求是能够运行'OLAP'查询,允许我:

  • '切片和骰子'
  • '向上/向下钻取'数据和
  • 通常,能够从不同的角度查看数据

在阅读了这个主题领域之后,普遍的共识似乎是最好使用维度表而不是规范化表来实现.

假设这个断言是正确的(即最好使用事实和维度表来实现解决方案),我想在这些表的设计中寻求一些帮助.

'自然'(或明显)维度是:

  • 日期维度
  • 地理位置

哪个具有分层属性.但是,我正在努力如何建模以下字段:

  • 性别(真/假)
  • 人口统计分类(A,B,C等)

我正在努力解决这些领域的原因是:

  1. 它们没有明显的层次属性,这将有助于聚合(AFAIA) - 这表明它们应该在事实表中
  2. 它们大多是静态的或很少变化 - 这表明它们应该在维度表中.

也许我上面使用的启发式太粗糙了?

我将举例说明我希望在数据仓库中进行的分析类型 - 希望这将进一步澄清事情.

我想按性别和人口统计分类汇总和分析数据 - 例如回答以下问题:

  • 在不同的人口统计分类中,男性和女性的权重如何比较?
  • 其中人口统计分类(男性和女性),本季度体重增加最多.

等等

任何人都可以澄清性别和人口统计分类是否属于事实表,或者它们是否(我怀疑)是维度表.

还假设它们是维度表,有人可以详细说明表结构(即字段)吗?

'明显'架构:

CREATE TABLE sex_type (is_male int);
CREATE TABLE demographic_category (id int, name varchar(4));
Run Code Online (Sandbox Code Playgroud)

可能不是正确的.

sql olap database-design data-warehouse

11
推荐指数
1
解决办法
9094
查看次数

从头开始构建OLAP解决方案时,我应该考虑什么?

我正在为一家运行基于MS SQL数据库服务器的软件产品的公司工作,多年来我用PHP开发了20-30个非常先进的报告,直接从数据库中获取数据.这非常成功,人们对此很满意.

但它有一些缺点:

  • 对于新的变化,它可能是非常发展的
  • 用户无法对数据进行多少实验 - 它被锁定到硬编码视图
  • 大报告可能会很慢

我正在考虑逐步采用基于OLAP的方法,可以从Excel或某些基于Web的服务查询.但我想以一种在IT环境中引入最少量新复杂性的方式来实现这一点 - 最少量的不同服务,同步工作等!

我在这方面有一些问题:

1)与工作流程相关:

  • 从"黑匣子SQL服务器"到"OLAP准备就绪"的良好发展路线是什么?
  • 应该设置哪些服务器和服务,以及应该编写哪些脚本?
  • 哪些是最难/最关键/最耗时的部分?

2)ETL:

  • 我想最好为他们的数据仓库和生产SQL提供单独的服务器?
  • 这些如何保持同步(推/拉)?使用哪些技术/语言?
  • 对我来说,SSIS看起来过于复杂,而且图形工作流对我来说并不吸引人 - 我宁愿喜欢基于文本的脚本来完成这项工作.这可行吗?
  • 或者仅使用一个源和一个目的地的图形客户端是否有利?

3)发展:

  • 从CLI工具可以有效维护多少(数据集成,分析服务)?
  • 设置是否可以轻松地在生产和开发之间来回切换?

我对任何涵盖其中一部分的答案感到满意 - 即使它是一个MS环境,我也很想知道其他技术的优势.

sql-server olap ssis data-warehouse business-intelligence

11
推荐指数
1
解决办法
2158
查看次数

NUMA架构如何影响ActivePivot的性能?

我们正在将ActivePivot应用程序迁移到新服务器(4个插槽Intel Xeon,512GB内存).在部署之后,我们启动了我们的应用程序基准测试(这是大型OLAP查询与实时事务并发的混合).测量的性能几乎是我们以前的服务器的两倍,它具有类似的处理器,但内核少两倍,内存少两倍.

我们调查了两台服务器之间的差异,看起来大型服务器有一个NUMA架构(非统一内存访问).每个CPU插槽在物理上接近内存的1/4,但远离其余部分...运行我们的应用程序的JVM分配一个大的全局堆,每个NUMA节点上有一个随机的堆.我们的分析是内存访问模式非常随机,CPU内核经常浪费时间访问远程内存.

我们正在寻找有关在NUMA服务器上利用ActivePivot的更多反馈.我们可以配置ActivePivot多维数据集或线程池,更改查询,配置操作系统吗?

java olap numa activepivot

11
推荐指数
2
解决办法
1万
查看次数

OLAP - 计算径流三角形,样本数据和包含的多维数据集(PostgreSQL/Mondrian)

现实描述:我们有一个项目列表.在每个项目中都有很多账户.您可以对每个帐户执行大量操作.我确实有以下维度和事实表定义(简化):

Dimensions and attributes:
 Project
  project_key
  project_name
  industry
  number_of_accounts
 Distance
  distance_key
  distance_in_months
  distance_in_quarters
 Account
  account_key
  project_key
  account_id
Fact Table and attributes:
 Action_Fact_Table
  project_key
  distance_key
  account_key
  action_id
Run Code Online (Sandbox Code Playgroud)

现在,我想使用径流三角形方法来分析数据(它可能不是真正的径流三角形,但方法是相同的).最简单的三角形看起来像:

              Distance in Months
Project name|     1    2    3    4    5    6    7    8    9    10
-------------------------------------------------------------------------
 Project1   |     5   10   15   20   25   30   35   40   45    50
 Project2   |     7   14   21   28   35   42   49   56   63
 Project3   |     2    5    8   11   14   20   25   30
 Project4   |     0    2 …
Run Code Online (Sandbox Code Playgroud)

olap ssas mdx data-warehouse mondrian

11
推荐指数
1
解决办法
1597
查看次数

任何可扩展的OLAP数据库(Web应用程序规模)?

我有一个应用程序需要针对不同级别的聚合进行分析,这就是OLAP工作负载.我也想经常更新我的数据库.

例如,这是我的更新看起来像(架构看起来像:时间,目标,源IP,浏览器 - >访问)

(15:00-1-2-2010, www.stackoverflow.com, 128.19.1.1, safari) -->  105

(15:00-1-2-2010, www.stackoverflow.com, 128.19.2.1, firefox) --> 110

...

(15:00-1-5-2010, www.cnn.com, 128.19.5.1, firefox) --> 110
Run Code Online (Sandbox Code Playgroud)

然后我想问一下上个月从firefox浏览器访问www.stackoverflow.com的访问量是多少.

我知道Vertica系统可以以相对便宜的方式实现这一点(明智的性能和可扩展性,但可能不是成本方面的).我这里有两个问题.

1)是否有可以构建的开源产品来解决这个问题?特别是,蒙德里安系统的运作情况如何?(可扩展性和性能)2)是否有HBase或Hypertable基础解决方案(显然,裸HBase/Hypertable不能这样做)? - 但如果有基于HBase/Hypertable的项目,可扩展性可能不会成为IMO的问题)?

谢谢!

database olap hadoop hbase olap-cube

10
推荐指数
1
解决办法
3628
查看次数

在Java中的内存OLAP引擎

内存中是否有OLAP(切片和骰子数据)Java库.(相当于Microsoft Analytic Services).特别想听听是否有人使用过一个真实的.

java olap

10
推荐指数
3
解决办法
8266
查看次数

模拟OLAP

我们有一个拥有Oracle Standard的客户端,以及一个使用OLAP轻松解决十倍的项目.但是,Oracle仅支持企业版中的OLAP .

迁移到企业是不是有可能

我正在考虑对OLAP进行一些手动模拟,创建关系表来模拟该技术.

你知道我能做到的其他方式吗?也许是OLAP的开源工具?有任何想法吗?

oracle olap cubes

9
推荐指数
1
解决办法
2550
查看次数

非时间维度中最后一个孩子的计算成员?

在SSAS多维数据集中,如何为非时间维度创建聚合为LastChild的度量?

源数据在任何给定日期都有相同业务记录的许多版本.时间维度的粒度为DATE,而不是秒和毫秒.

事实记录具有时间戳和增量(标识)主键.实际上,我想要的是将度量计算为给定日期所有编辑的最后一个值.

到目前为止,我看到的选项分为两类:

  • 产生一个低至秒的时间维度.这将导致非常大且低效的时间维度.

要么

  • 隐藏度量并使用计算的度量替换它们,这些度量根据主键查找任何给定日期的最后一个值.这很麻烦且效率较低.

是否有解决这个问题的最佳位置或替代技术?

数据的自然层次结构是:

  1. 业务关键
  2. 记录时间戳(指向TIME维度的链接)
  3. 代理钥匙

sql olap ssas mdx

9
推荐指数
1
解决办法
1208
查看次数

spring-boot是否支持任何动态OLAP报告生成工具?

我需要在现有的spring boot Web应用程序中添加OLAP报告支持.我遇到过多种BI工具,如BIRT,JasperServer Report和Saiku,但对于所有这些工具,我必须使用已经创建的多维数据集.如果数据有任何修改,它将不会反映在我的报告中.

是否有任何第三方工具可以帮助我在运行时创建多维数据集或通过在运行时向多维数据集添加数据来生成报表?

olap spring olap-cube olap4j spring-boot

9
推荐指数
1
解决办法
640
查看次数

从python连接到Azure分析服务

我有Azure分析服务实例,使用表格模型,我需要通过DAX或MDX从python脚本查询数据.

我从Azure获得了一个看起来像这样的连接字符串:

Provider=MSOLAP;Data Source=asazure://eastus.asazure.windows.net/mymodel;Initial Catalog=mycatalog;User ID=myuser@mail.com;Password=mypass;Persist Security Info=True;Impersonation Level=Impersonate
Run Code Online (Sandbox Code Playgroud)

我试图用pyodbc连接到该连接字符串:

import pyodbc

connection_str = "Provider=MSOLAP;Data Source=asazure://eastus.asazure.windows.net/mymodel;" \
                 "Initial Catalog=mycatalog;User ID=myuser@mail.com;Password=mypass;" \
                 "Persist Security Info=True;Impersonation Level=Impersonate"

my_connection = pyodbc.connect(connection_str)
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

Traceback (most recent call last):
  File "C:/workspace/test.py", line 7, in <module>
    my_connection = pyodbc.connect(connection_str)
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

python olap azure-analysis-services

9
推荐指数
1
解决办法
987
查看次数