我的时间维度定义如下:
<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>
但是,当我将其添加到时间维度时,我得到以下内容 蒙德里安的例外:
Level '[optin.defined].[defined]' belongs to a time hierarchy, so
its level-type must be 'Years', 'Quarters', 'Months', 'Weeks' or
'Days'.
我可以将层次结构defined
放入单独的维度,但是
然后我最终得到了两个非正交的维度,这些维度都没有
感觉同时分割。这些是两个
同一维度内的层次结构。我也可以转optin
维度进入非时间维度,但后来我失去了能力
使用时间序列函数(PARALLELPERIOD
,YTD
等)。
实现我想要的最好方法是什么 - 能够分段 日期字段部分以及它是否为空?
答案 0 :(得分:0)
级别'[optin.defined]。[已定义]'属于时间层次结构,所以 它的等级类型必须是'年','宿舍','月','周'或 '天'。
错误告诉您,在时间维度(Regular
)内不可能有“非基于时间”(TimeDimension
)级别:
<Dimension name="optin" type="TimeDimension">
...
<Level name="defined" uniqueMembers="true" type="Boolean">
常规类型的级别只能与StandardDimension
一起使用。
实现我想要的最好方法是什么 - 能够分段 日期字段部分以及它是否为空?
我认为你没有正确使用时间维度。标准方式是时间维度如下:
dim_time
和{ {1}}(例如date_key
)20150123
,其中包含<Dimension name="Time" type="TimeDimension">
“年/季/月/周/天”。与你拥有的相似,但这样它包含了所有的日子。 levels
属性指向primary_key
。下一步是调整date_key
(个人资料):
optin
行数据+ optin_date_key(可以为null或有值)optin
创建多维数据集,使用之前创建的时间维度profile
指向foreign_key
。并测量将所有配置文件与非空optin_date_key
值相加。配置文件多维数据集的示例OLAP代码:
optin_date_key
通过这种方式,您应该能够报告填写了<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>
字段的配置文件数(非空)。
您还可以做的是在虚拟多维数据集中使用此多维数据集以加入其他度量。