页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

(本文档仅供参考)

使用产品版本及功能:SmartbiV11版本,基于数据模型制作的透视分析。

情况一:数据表中日期字段为date相关类型

orders表中orderdate字段为datetime类型使用产品版本及功能:SmartbiV11版本,基于数据模型实现时间计算的前提为模型数据中必须包含【时间维度】层级,且时间维度中必须包含【年】,以下文档帮助用户在不同场景下实现数据模型生成时间维度。

时间计算应用范围:仪表盘、透视分析、模型查询、电子表格、web电子表格。

1 生成时间维实现时间计算

以产品内置的northwind数据库的orders例,查看每日运费的前期值。

1、orders表结构中orderdate字段为 datetime 类型

Image Modified

数据模型中引用此orders表后,即可直接对订单日期字段生成时间层次2、创建数据模型中引用orders表后,即可直接对”订单日期“字段生成时间层次

Image Modified

制作透视分析时,将时间维度中的字段根据需求任意拖拽至表格区域,即可快速时间计算

Image Removed

情况二:数据表中日期字段为char、string类型

表中日期字段为字符串类型

Image Removed

数据模型中引用此表后,可以先对日期字段在表字段属性处做日期类型转换(此处是显示格式,并不会改变数据库的实际类型)

Image Removed

Image Removed

类型转换后在数据模型中可以看到原来日期字段格式已经被转换,即可对转换后的字段创建时间层次结构

Image Removed

制作透视分析时,将时间维度中的字段根据需求任意拖拽至表格区域,即可快速时间计算

Image Removed

注意:对日期字段显示格式转换后,再拖拽日期字段生成筛选条件时【控件类型】必须使用【日期】

Image Removed3、保存数据模型之后,去制作透视分析时,将时间维度中的字段根据需求任意拖拽至表格区域,即可快速时间计算

Image Added



2 标记”字符串“的日期以生成时间维度实现时间计算

适用情况:数据表中“年”、"年月"、”年月日“字段为字符串类型,需要实现前期值等时间计算。

Image Added

警告
title前提条件

1、标记时间层次的功能比较容易用错,比如将仅包含年月是“01”、“02”这样月份数据的字段,标记为年月(MM格式),这种层次在报表上做同期值等时间计算时,会出现没有数据或者不正确的问题。

2、目前模型仅支持标准的时间格式标记为时间层次,要求原始数据必须符合以下格式:

年:yyyy(例如2024)

年季:yyyyQq(例如2024Q1)

年月:yyyy-MM(例如2024-01)

年周:yyyy-Www(例如2024-W20)

年月日:yyyy-MM-dd(例如2024-10-01)

具体操作如下:

信息
title前提条件


1、由于示例使用了 零售数据 进行分析,在复现示例时,可以把数据先导入到模型中,详细请参考导入文件数据

2、示例下载数据:零售数据.xlsx


1、创建数据模型并导入数据,把年、年月、年月日标记为时间层次

Image Added

2、保存数据模型之后,去创建透视分析,查看 销售量 的前期值,如下图,可以正确查询出来:

Image Added

3 通过生成日期表实现完整的时间计算

1、如果想要查询的日期是独立完整的,没有缺失的可以通过生成日期表来实现,详细可查看:创建日期表

2、创建好日期表如果不想基于 日期字段 生成时间层次,可以通过章节”2 标记字符串的日期以生成时间维度实现时间计算“的方式来生成时间维度。 这种方式在大数量情况或者多表关联下,可以提高时间计算的性能,也是推荐的方式。

Image Added

3、如果生成日期表的方式会导致抽取,而又不想抽取可以通过把生成的日期表导出来,再把该日期表导入到对应的业务库中,把它加载到对应的模型中,再进行关联分析计算。

具体的操作步骤如下(这里只是示意,也可以通过excel生成想要对应的数据):

1、创建数据模型,并在数据模型中创建日期表。

填写日期表的信息,操作说明可以参考创建日期表

Image Added

2、点击【确定】,可以看到生成了对应的字段。

Image Added

3、保存数据模型并去创建即席查询, 勾选需要的字段,并且导出execl或者csv文件到本地。

Image Added

4、在 数据连接 把导出的文件导入到对应的数据源下,上传文件到业务数据源的操作可参考:文件

5、再把导入的文件(在数据源下对应那张表)加入到数据模型中,设置关联关系即可。


4 字符串通过计算列转日期实现时间计算

4.1日期意义的字段中包含完整的年月日信息如20240101

信息
title前提条件


1、由于示例使用了 零售数据 进行分析,在复现示例时,可以把数据先导入到模型中,详细请参考导入文件数据

2、示例下载数据:零售数据-字符串日期.xlsx

适用情况:数据表中“年月日“字段为字符串类型,需要实现前期值等时间计算。

Image Added

1、创建数据模型并把文件导入到模型中

Image Added

2、创建计算列,让字符串转成日期,更多计算列函数可查看:计算列实现场景介绍

Image Added

3、点击【确定】,回到数据模型,再基于创建的计算列创建事件层次,如下图:

Image Added

4、保存数据模型,去创建透视分析,查看 销量的前期值效果如下:

Image Added

4.1日期意义的字段中仅包含年月如202401

先使用计算列截取年维度

image2024-11-20_11-32-1.pngImage Added

再新建层次结构,并把计算列和原始日期字段移动到新增的层次中

Image Added

如此便可对计算列标记时间层次了

Image Added