gpt4 book ai didi

mondrian - 时间维度内的非时间层面

转载 作者:行者123 更新时间:2023-12-01 21:12:27 25 4
gpt4 key购买 nike

我定义了一个时间维度,如下所示:

<Dimension name="optin" type="TimeDimension">
<Hierarchy name="optin" hasAll="true" allMemberName="all optin" primaryKey="profile_id">
<Table schema="schema1" name="profiles"/>
<Level name="optin_year" column="optin_year" uniqueMembers="false" type="Numeric" levelType="TimeYears"/>
<Level name="optin_quarter" column="optin_quarter" uniqueMembers="false" type="Numeric" levelType="TimeQuarters"/>
<Level name="optin_month" column="optin_month" uniqueMembers="false" type="Numeric" levelType="TimeMonths"/>
<Level name="optin_day_in_month" column="optin_day_in_month" uniqueMembers="false" type="Numeric" levelType="TimeDays"/>
</Hierarchy>
</Dimension>

这非常适合对各种日期部分(年、季度、月日)。但是,我还希望能够报告数量填写了 optin 字段的配置文件(非 NULL)。为了非时间维度将此层次结构添加到上述维度作品:

<Hierarchy name="defined" hasAll="true" allMemberName="all optin" primaryKey="profile_id">
<Table schema="schema1" name="profiles"/>
<Level name="defined" uniqueMembers="true" type="Boolean">
<KeyExpression>
<SQL>optin_day_in_month IS NOT NULL</SQL>
</KeyExpression>
</Level>
</Hierarchy>

但是,当我将其添加到时间维度时,我得到以下结果蒙德里安的异常(exception):

Level '[optin.defined].[defined]' belongs to a time hierarchy, so
its level-type must be 'Years', 'Quarters', 'Months', 'Weeks' or
'Days'.

我可以将层次结构定义放入单独的维度中,但是然后我最终得到两个非正交维度,它们不会产生任何感觉同时分段。这确实两个同一维度内的层次结构。我还可以打开 optin维度变成非时间维度,但随后我就失去了能力使用时间序列函数(PARALLELPERIODYTD 等)。

实现我想要的目标的最佳方式是什么——能够对日期字段部分以及它是否为空?

最佳答案

Level '[optin.defined].[defined]' belongs to a time hierarchy, so its level-type must be 'Years', 'Quarters', 'Months', 'Weeks' or 'Days'.

该错误告诉您,时间维度 ( Regular ) 内不可能有“非基于时间”( TimeDimension ) 级别:

<Dimension name="optin" type="TimeDimension">
...
<Level name="defined" uniqueMembers="true" type="Boolean">

常规类型的级别只能与 StandardDimension 一起使用.

What's the best way to achieve what I want--to be able to segment on a date field parts and on whether or not it's empty?

我认为你没有正确使用时间维度。标准方法是时间维度如下:

  • DWH:数据仓库中预加载的时间数据(例如从 1900 年 1 月 1 日到 2099 年 12 月 31 日的每一天的记录)- 表 dim_timedate_key (例如20150123)
  • OLAP 架构: 固有时间维度 <Dimension name="Time" type="TimeDimension">其中包含 levels为“年/季度/月/周/日”。与您拥有的类似,但这样它包含所有日期。与primary_key属性指向date_key .

下一步是调整optin (简介):

  • DWH: optin行数据+ optin_date_key(可以为空或有值)
  • OLAP 架构:profile 创建多维数据集with,使用之前创建的时间维度 with foreign_key指向optin_date_key 。并测量所有具有非空 optin_date_key 的配置文件的总和。值(value)观。

配置文件多维数据集的示例 OLAP 代码:

<DimensionUsage source="Time" name="Time" caption="Profile Date" visible="true" foreignKey="optin_date_key" highCardinality="false">
</DimensionUsage>
<Measure name="#Profiles" aggregator="sum" visible="true">
<MeasureExpression>
<SQL dialect="generic">
<![CDATA[optin_date_key]]>
</SQL>
</MeasureExpression>
</Measure>

这样您应该能够报告具有optin的配置文件的数量。字段已填写(非 NULL)。

您还可以做的就是在虚拟多维数据集中使用此多维数据集来连接其他度量。

关于mondrian - 时间维度内的非时间层面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20646668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com