问题标签 [fact]
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.
database - 核心/自定义事实表
我有一个按订单/行粒度定义的事实表。每个订单都属于某个垂直行业,每个垂直行业都有用于描述其数据的自定义属性。我希望能够允许用户查询所有订单,而不管垂直,但是在查询特定于垂直的数据时,能够按垂直特定属性进行过滤。
以下是我计划如何构建它,但如果这看起来像一个好的设计,或者如果这不好,请推荐另一种方法。
事实表将包含 VerticalKey FK。这些是我计划制作的 Dims:
DimVertical(超类型/核心)
- VerticalKey(自动增量)
- OrderId(备用键)
DimVertical-Car(子类型/自定义)
- VerticalKey(来自 DimVertical.VerticalKey 的密钥 ID)
- 自定义属性ABC
- 自定义属性DEF
- 自定义属性 GHI
DimVertical-Motorcyle(子类型/自定义)
- VerticalKey(来自 DimVertical.VerticalKey 的键)
- 自定义属性123
- 自定义属性456
为了查询所有订单,只需对超类型 DimVertical 进行连接。但是,当我想通过垂直特定属性查询特定垂直时,我只会包含可选的子类型 Dimension。
这看起来是个好方法吗?其次,如果这是一个很好的方法,假设“OrderType”是一个超类型属性,所以它可以进入 DimVertical 维度,这很糟糕吗?我质疑这一点,因为我知道你不应该有一个标题维度,这就是这种情况,但我不知道如何支持“自定义”订单标题搜索能力。
提前致谢!
list - 在 Prolog 规则中使用事实列表
我目前正在编写一个铁路线程序,但在使用来自事实的列表时遇到了一些麻烦。我对 Prolog 很陌生,到目前为止,我已经写了以下事实和规则:
这个想法是让规则返回两个位置共有的行的名称。如果我尝试,这会起作用hasCommonLine(warwickAvenue,paddington,Line).
,但是如果我尝试,它会返回 false hasCommonLine(euston,warrenStreet,Line).
。
我怀疑这是因为该规则只检查列表的第一个元素,因此只比较[northernLine]
而[victoriaLine]
不是检查列表中的每个元素。任何指导来实现这一点将不胜感激!
sql - 我应该合并事实表的列以使其更窄,还是应该通过大量列使其对用户更加友好?
我有一个显示 KPI 结果的事实表。有几个 KPI,其中一些具有相似的输出。
我目前的专栏是这样的:
因此,对于 KPI 编号 1(真假输出),最后三列将是 NULL 值。我应该结合TRUE_FALSE_FLAG1
andTRUE_FALSE_FLAG2
吗?什么是最佳实践?
总共有 18 列,其中 12 列是真/假标志或“天数”(整数)形式的持续时间。
编辑:KPI 3 可能是“问题的持续时间”,你会遇到一堆问题,每个问题都有一个 documentID,表示为一行。Dur_3 就像 5 天、3 天、10 天等。KPI 4 将是“订购维修后的修复延迟”,答案仍然是整数天。但与 KPI 3 完全无关。
报告可能是“修复的平均延迟”。所以大致从 KPI_ID = 3 按 KPI_ID 分组的表中选择 AVG()。
sql - 填充事实表
我有一个销售数据仓库,它有 3 个维度 [产品、时间、商店] 和一个事实表 [sales_fact]。
“sales_fact”表的主键由维度表的所有主键组成,维度表现在都是手动填写的 我想用存储在某个城市的特定月份或 3 的产品价格的总和来填充“sales_fact”表月期间。
我应该如何总结与特定月份相关的产品表中的价格并将其添加到事实表中?
data-warehouse - 父母子女的 EDW 事实表
我正在构建基于 Kimballs 方法的 EDW。我在我们的源系统(订单/行项目)中有父/子关系。我拥有的事实表是在行项目粒度中定义的。企业希望能够通过额外的订单级别属性(即发货方法、订单类型等)对这些数据进行切片和切块。我计划创建一个订单维度,而不是将这些属性直接添加到事实表中。我不想将这些直接添加到事实表中,因为添加所有可能的属性会使该事实表变得非常宽。
所以问题是......设计一个具有描述订单属性的订单维度是否可行?该维度将没有任何度量,因为所有度量仍将在事实表中。这只是描述事实的附加数据。
谢谢!
sql-server - 具有模糊层次结构的销售目标(又名预算)事实,其中父项的度量小于其子项的度量之和
我的组织需要在 SQL Server 中构建一个数据仓库(最终在 SSAS 中构建一个多维数据集),其中一个事实表用于销售目标/预算数据。
到目前为止,我只处理了与这个问题相反的问题,即孩子的价值总和小于父母价值的总和。
这里的问题是如何对事实表进行建模,其中孩子的价值之和是父母价值的 n 倍之和。
下表表示是我描述问题的最佳方式。
每个员工都有一个销售目标/预算金额,如下所示:
上述员工级别的预算值被拆分为实践(相当于法律实践的组织术语,例如移民、公司等),如下所示:
该员工的每个实践类型的预算都满足该员工的总预算。
...等等。
如果实践预算表(上面的第 2 个表)用于事实表,则汇总员工的所有 EmployeePracticeBudgetAmount 会产生预算金额,即员工预算的 3(可用的实践类型数量)乘以员工的预算。
关于如何将其建模为事实表的任何指针/想法?
提前致谢。
注意:还有其他维度,如会计月份和会计年度,高于员工级别,需要汇总预算金额。为简洁起见,我没有在上述问题中提出这些内容。
hadoop - 在 hive 中生成星型模式
我来自 SQL Datawarehouse 世界,我从平面提要生成维度和事实表。在一般数据仓库项目中,我们将提要分为事实和维度。前任:
我对 Hadoop 完全陌生,我开始知道我可以在 hive 中构建数据仓库。现在,我熟悉使用 guid,我认为它适用于 hive 中的主键。那么,以下策略是在 hive 中加载事实和维度的正确方法吗?
- 将源数据加载到配置单元表中;比如说 Sales_Data_Warehouse
从 sales_data_warehouse 生成维度;前任:
从 Sales_Data_Warehouse 中选择 New_Guid()、Customer_Name、Customer_Address
当所有维度都完成后,加载事实表,如
SELECT New_Guid() AS 'Fact_Key', Customer.Customer_Key, Store.Store_Key... FROM Sales_Data_Warehouse AS 'source' JOIN Customer_Dimension Customer on source.Customer_Name = Customer.Customer_Name AND source.Customer_Address = Customer.Customer_Address JOIN Store_Dimension AS 'Store' ON Store.Store_Name = Source.Store_Name JOIN Product_Dimension AS 'Product' ON .....
这是我应该在配置单元中加载我的事实和维度表的方式吗?
此外,在一般仓库项目中,我们需要更新维度属性(例如:Customer_Address 更改为其他内容)或必须更新事实表外键(很少,但确实会发生)。那么,我怎样才能在 hive 中加载 INSERT-UPDATE 。(就像我们在 SSIS 中查找或在 TSQL 中执行 MERGE 语句一样)?
data-warehouse - 关于如何在星型模式中对许多半布尔属性进行建模的问题
在星型模式的维度中对 37 个不同的属性/“检查点”(可以分级为通过/失败/不适用)进行建模的最佳方法是什么,其中事实表中的每一行都是针对检查点分级的通信问题?
TL;博士:
我开发了一个星型模式模型,其中事实表中的每一行都是一个单一的通信。这些通信经过一系列分级“检查”(例如“按时发布”、“正确的电子邮件主题”、“正确复制 XYZ 内容”等),每项检查都可以分级为“通过”、“未通过”、或“不适用”。
不同类型的沟通在不同的检查集上进行评分(例如,一种类型的沟通可能只在三张检查上评分,其余为“不适用”,而另一种沟通在 19 次检查上评分)。共有 37 个唯一检查。
我建立了一个“CommunicationGrading”类型 2 缓慢变化的维度,以方便报告哪些“检查”通信得分最差。该维度有 37 列,每个属性一列,每一行是属性的排列以及它们可以收到的分数(通过/失败/NA)。当一个新的排列可用时添加一个新行 - 不幸的是,填充所有可能的排列会返回数百万行,而这种方式小于 100 行,开销要少得多。我创建了 37 个单独的度量来汇总错过 37 个单独“检查”中每一个的通信的数量。
我可以在 PBI 中快速构建一个树形图,将 37 个度量拖到那里,查看错过每个“检查”的通信总数,并确定本月有 X 个通信错过了 Y 个检查点。当我想使用视觉作为切片器时,问题就出现了(例如,在树形图上选择一个检查/平铺以查看在树形图下方的表格中检查的单个通信错过了什么)或确定给定切片的前 N 个“检查”数据的。
据我所知,问题是因为我使用了 37 个不同的属性和度量,而不是一个属性和一个度量(我可以将单个度量拖到值中,将包含所有检查的单个属性/列拖到组字段中树图视觉)。问题是,我对如何最好地建模这个/分级维度感到困惑。是否需要将维度缩减为仅两列,一列用于检查,另一列用于检查的可能分数,然后创建一个桥接表来处理 M:M 关系?其他想法?
pentaho - 如何在pentaho的单个蒙德里安立方体中添加多个事实表?
需要将多个事实表与一个蒙德里安立方体相关联。架构工作台不允许这样做。我们怎样才能做到这一点?