问题标签 [star-schema-datawarehouse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL - 加载没有业务ID的数据仓库维度表?
只是想看看是否有其他人处理过这个问题以及如何处理。
我正在构建一个星型模式 DW,目前正在构建我的维度表。它们中的大多数都很好,因为描述都有 ID,例如我有一个“动作类型描述”和一个“动作类型 ID”,我可以使用它们来构建我的 dimActionType 维度。
我的问题是一些描述字段没有相应的业务密钥 - 例如,我有一个“组角色”描述但没有业务 ID。将其放入 DimGroup 表的最佳做法是什么?我可以将不同的组角色选择到具有自动增量的表中,但是我如何将我的事实表加入到这个表中?
欣赏任何想法/想法
database-design - 设计具有混合粒度的事实表
我正在设计一个用于报告的数据模型。在源代码中,必须考虑三个表。
发票表 测试表 服务表
测试和服务是针对发票的。一张发票可以有多项测试和多项服务。
例如:
发票编号 | 测试计数 | 服务计数 |
---|---|---|
123 | 0 | 4 |
435 | 2 | 5 |
435 | 4 | 2 |
计算总收入总金额列可参考发票表。但是对于净收入。必须计算 Test 表中的 Testcost 列和 service cost 中的 Servicescost 列的总和。
在为测试和服务设计事实表时。我认为最好使用两个事实表,一个用于测试,一个用于服务,因为它们具有不同的粒度,并且在报告时创建一个度量来计算两者并获得总净收入。
是否有任何其他可能的方法可以将测试和服务细节保持在同一事实中?IE。在一个事实中混合粒度?
请任何有价值的见解
提前致谢
etl - 事实表中的默认数据
我有ff。将转换为维度 (dim_proposal) 和事实 (fact_funds) 表的数据库表 'proposal' 和 'funds'。“提案”到“资金”的基数是零对多,“资金”到“提案”是一对多。
我的问题是我应该生成代表零资金提案行的事实数据吗?在源系统中,零资助提案没有生成行。请为这种情况提供最佳方法和实践。
谢谢你。
data-warehouse - 星型设计反馈
我在一家 OTC 公司工作。
这是工作流程的背景。Taker (Buyer) --> 请求衍生品报价 --> Maker(Quoter) 以报价响应 (bid/ask) ---> Taker 买/卖 (交易) 或对报价不采取任何行动。可以从多个制造商发送和接收报价。
让我知道我的星型模式是否正确。
我认为接受者、制造者是维度表。请求作为一个事实表,引用作为另一个事实表。这种方法正确吗?
mysql - 8 个 vCPU、32 GB 内存、250 GB SSD 服务器需要 1 到 2 秒来完成具有 12 个 SUM 函数的查询和 80,000 行表上的 JOIN
我有以下 2 个表(browsers
和metrics
)。browsers
是一个存储浏览器名称和版本的“维度表”。metrics
是一个“事实表”,其中包含browser_id
和指标以及日期。根据explain select (...)
no key is used onmetrics
和 primary key is used on browsers
。
服务器:
- 8 个 vCPU、32 GB 内存、250 GB SSD
- MySQL 8
如果没有所有的 SUM 函数,900ms 的时间减少了大约 250 到 300ms。没有GROUP BY
甚至下降到 1 到 2 位数毫秒。不幸的是GROUP BY
,我需要 SUM 以及 SUM 函数的数量。
这样的服务器需要 1 秒到 2 秒才能对只有 80,000 行的表执行查询的原因是什么?根据explain analyze
SUM 函数需要总共需要 96% 的时间 ( actual time=845.038..845.052
)。
即使在我的本地服务器上,使用相同的数据,我也只需要大约 10 毫秒 - 所以我怀疑服务器设置错误(根据 mysqltuner 没有显着的建议)。
data-warehouse - 这是在加载到 DW 之前准备事实数据的正确方法吗?
我们的源系统数据不是在交易记录中引用产品和客户业务键的典型销售交易表。在我获得客户或产品信息之前,中间有一两个表。当我将数据加载到 DW 中的临时表中时,我计划准备数据(通过使用 spark 对存储在数据湖中的事务和客户/产品之间的所有表执行连接)以获得客户和产品业务密钥。这是正确的方法吗?我不想在临时表上执行这些连接。相反,我想使用所有上下文(关联的业务键)加载准备好的数据。在将它们加载到目标事实表时,我将用代理键替换这些键。
data-warehouse - From operational data store to warehouse
I have 3 ODS, so in order to create DWH, do I need a DWH for each ODSs, or the DWH select the tables from any of the ODSs?
data-warehouse - 如何确保在 SCD2 中捕获对维度的每次更改?
我在一家金融公司工作。我们需要在交易时跟踪准确的价值维度。我们尝试在大约 15 分钟内将数据增量加载到仓库中,在此期间,我们可以看到具有确切业务键的维度多次更改(收集了多条记录)。通常,我们编写脚本以在 15 分钟窗口内选择最新的所有更改。但在我们的例子中,我希望将所有这些更改加载到维度表中。如何实施?
编辑:
同一批次中的示例:
data-warehouse - 将模式作为维度数据模型的代码进行管理
在实现维度数据模型时,可以通过哪些方式来实践模式迁移和演变。
我们开始对数据仓库进行建模,并允许模型的迭代开发,我们认为有必要使模式的演变自动化。有哪些不同的方法可以实现?我们可能遇到的各种问题或已知的反模式是什么?
我们探索的一种解决方案是使用 Flyway 等工具并在持续部署管道中执行模式迁移。
star-schema - 具有重叠期的表的星型模式
我需要设计一个星型模式,它响应我未来的指标,稍后将在数据仓库中实现,但我的知识非常基础,我在开发模型时遇到了严重的困难
我不确定是否应该创建单独的星型模式,或者是否可以使用桥接表。
每个会话在单个频道上完成,但根据其时间间隔,可能会或可能不会观看超过 1 个节目
每个程序都有自己的分类(12 种可能的分类)
-TuneTime >> 开始 DateTime 会话(例如 2020-12-02 00:35:00)
-TuneDuration >> 会话持续时间(以秒为单位)
-StartDate >> 开始DateTime程序(例如2020-12-01 23:35:00)
-EndDate >> End DateTime Program (eg 2020-12-01 00:23:00)
最小时间粒度 = 15 分钟
我将不得不分析一系列与设备访问相关的指标,包括每个频道、分类、观看次数最多的节目的排名、每个频道的份额等。我们的想法是能够在预定义的日期获得这些数据范围由用户决定,并能够改变时间尺度,例如:
- 每月每周
- 按星期几(星期一,星期二,...)
- 按每日时段(晚上,早上,...)
- 每天(15 分钟间隔)
对我来说很明显我将不得不创建:
- DIM_Time
- DIM_Date
但是我如何评估事实表中每个程序的持续时间
我做了一个小示意图来可视化,它可能不会做任何事情:)
我对自己的推理没有信心,非常感谢一些帮助