如何用date和time来创建时间维度表
为了使WinCC能够访问S7控制器DATE_AND_TIME数据类型的变量,必须创建一个对应DATE_AND_TIME数据类型的结构变量。字节S7数据类型DATE_AND_TIMEWinCC结构元素时间标识0YearYEAR"yyyy"1MonthMONTH"m"2DayDAY"d"3HourHOUR"h"4MinuteMINUTE"n"5SecondSECOND"s"61/10and1/100secondMILLISEC174MSB:1/1000second4LSB:weekdayMILLISEC2表01使用VBS函数“DatePart”,可以确定WinCC日期/时间变量的组成元素(如,年,日,分钟),通过“DateAdd”改变日期/时间的组成。这两个VBS函数需要在表中指定时间标识以确定日期/时间的组成。信息:关于结构变量DATE_AND_TIME的信息请参考手册ProgrammingwithSTEP7下的:"Appendix""Dataandparametertypes""Combineddatatypes""FormatofthedatatypeDATE_AND_TIME";关于读取指定date/time组成的信息请在WinCCInformationService下索引:DatePart;关于编辑指定date/time组成的信息请在WinCCInformationService下索引:DateAdd。说明:以下说明是组态创建必需的WinCC结构变量。为此,WinCC项目必须已经打开,并且到控制器的连接也已经组态。No.步骤1在树形图中右键点击“结构变量”并选择菜单“新建结构类型”;2在"OS"区域右键点击"NewStructure",选择菜单"重命名"并输入新的结构名称(如S7_DATE_AND_TIME);3点击按钮“新建元素”,右键点击“SHORTNewTag”,选择数据类型为“BYTE”;4选中“BYTENewTag”,在类型转换下拉列表中选择“ByteToBCDByte”;5再次右键单击已插入的结构元素(“BYTENewTag”),选择菜单“重命名”并输入名称“YEAR”;6重复步骤3-5创建如下变量,然后点击“OK”确认此对话框。MONTHDAYHOURMINUTESECONDMILLISEC_1MILLISEC_2图017在变量管理器中,双击已经建立的通道(如TCP/IP)并且点击新建的连接;8右键单击明细窗口的空白区域,选择菜单"新建变量"。9输入名称(如CPUTime),数据类型选择已创建的结构名称(如S7_DATE_AND_TIME);10选择数据区(如数据块DB2)及DATE_AND_TIME变量的起始字节(如0),然后点击“OK”确认所有对话框。图02注释:在变量管理中不能删除结构变量。仅在"StructureTypes""NameofStructure""NameofTag"才能删除结构变量。如果为同样结构的多个结构创建函数,必须transfer函数的结构名称。结构元素的变量名称是动态生成的,例如DATE_AND_TIME结构:
创新互联企业建站,十载网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都做网站、成都网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
《数据仓库工具箱》读书笔记(一):维度建模初步
1、方便地保存数据
2、数据一致性
3、适应变化
4、及时展现数据
5、信息安全
6、数据权威
7、支撑业务
1、理解业务 理解用户
2、为用户提供高质量、相关的、可访问的信息
3、维护数仓/分析环境
1、维度模型和3NF模型包含的数据是一样的,只是维度模型存储的数据更易理解,查询性能更高,包装得更灵活
事实表:
2、维度模型中的事实表来自对业务过程性能的 度量
3、事实表中每行对应一个度量事件
4、每行中的数据是一个特定级别的细节数据,称为 粒度
5、事实表通常分为事务、累计快照、周期快照
6、事实表主键通常成为组合键
维度表:
7、维度表包含与业务过程度量事件有关的文本 环境
8、数仓分析环境取决于维度属性的质量和深度
1、Kimball
1、收集业务需求与数据实现
2、维度设计过程:选择业务过程、声明粒度、确认维度、确认事实
3、业务过程是组织完成的操作型活动(订单、注册)
4、粒度:事务表里的每一行表示的是什么
5、维度:用于描述环境
6、事实:对业务过程进行度量
7、灵活扩展:事实粒度一致时可直接创建列,通过新的维度列关联维度至事实,可以在维度表上简历新列添加属性,可以使事实表粒度更原子化
1、事实表行对应一个度量事件
2、可加、半可加是针对维度而言的,部分维度可加的是半可加。
3、事实表中的外键不能存在空值
4、最好保证事实度量是一致的
5、事务事实表:一行对应空间或时间上某点的度量事件,比如订单表、日志表
6、周期快照事实表:每行汇总了发生在某一周期的多个度量事件,比如一个用户在一天里的点击、退出次数
7、累计快照事实表:每行汇总了发生在过程开始和结束之间可预测步骤内的度量事件,比如订单有提单、支付、成单、配送、评价的可作为度量的过程
8、无事实事务表:可能存在某些事件仅仅记录 多维实体 ,没有数字化的事实
9、聚集事实表:对原子粒度事实表数据进行上卷
感觉多数还是事务和聚集事实表
1、维度表应当具有单一主键列,它是扁平非规范表
2、维度表需要主键,可以为维度表生成无语义的整数型主键,可以借助UDF来进行生成
3、操作型系统中自然键不能满足需求时可以采用持久性超自然键
4、将常用维度退化到事实表中,清楚地表明没有关联的维度
5、同一维度可能存在不同的层次,一级城市,二级城市
6、可以建立将不同维度合并到一起的杂项维度,而不要为每个标识或属性定义不同维度
7、 雪花维度: 低粒度属性作为辅助表通过属性键连接到基本维度,当这一过程中包含多重维度表层次时,建立的多级层次结构被称为雪花模式
8、支架维度:被引用的辅助维度成为支架维度,比如银行账户维度可以引用开户日期维度
当不同的维度表的属性具有相同列名和领域内容时,称维度表具有一致性
1、原样保留
2、重写
3、增加行
4、增加新属性(列)
1、固定深度位置层次,能够提佛那个可预测的、快速的查询性能
2、其他还可能存在可变深度层次、层次桥接、路径字符属性可变深度层次,但这些最好向固定深度层次进行统一
1、蜈蚣事实表:存在多层次维度外键
2、事实表也可分配代理键
3、多遍SQL以避免事实表间的连接
1、聚集事实也可作为维度进行处理(例如金额大于多少的用户)
2、步骤维度:在日志表里可以为行为顺序进行编号,探究行为发生的过程,这个维度叫步骤维度
可视化数据表如何添加维度表
创建维度表时:
可以关联本维度表是用于分析哪个业务分类、哪个数据域,便于后续直接查看具体某一数据域或数据集市下,有哪些维度表。
可以指定维度表后续在数据建模分析使用时,维度表的数据存储于数仓中的哪个数据分层,一般情况下维度表可存储于公共维度层(DIM层)。
维度表创建后,您可以将维度的属性添加为维度表的字段,并对维度表进行关联和分区的设置,使用统一的数据标准来进行字段设置,保障全数据域中的维度数据的属性是一致的。
维度表配置完成后:
可物化至存储引擎,后续在计算引擎中使用维度表进行数据分析。
在进行数据派生指标和汇总表的设计创建时,可直接关联使用维度表中的维度。
创建维度表
进入维度建模。
登录DataWorks控制台。
在左侧导航栏,单击工作空间列表。
选择工作空间所在地域后,单击相应工作空间后的数据开发。
单击左上方的图标图标,选择全部产品 数据建模 维度建模,进入维度建模页面。
创建维度表。
在维度建模页面,鼠标悬停至加号图标,单击逻辑模型 创建维度表。
配置维度表的基本信息。
您可根据需求,选择维度表所挂载的层级、数据域、业务分类、数据集市等信息,选择后,后续可进入相应对象的列表查看所创建的维度表。创建维度表主要参数说明如下。
参数项 描述
存储策略 维度表基于什么策略(即存储数据的时间周期及数据量范围)存储数据。
维度 维度表关联的维度,用于配置维度表分析数据的视角。
说明 创建维度,详情请参见创建维度。
表名规则 通过已配置的检查器规范维度表的命名规则。选择检查器后,该维度表的表名需按照检查器定义的规则配置。
说明 配置检查器,详情请参见配置及使用数仓分层检查器。
生命周期 维度表保留的时间周期。最大可保留36000天。
表类型 根据实际情况,选择如下类型。
普通维度表:普通的维度表,无其他需求可选择该类型。
枚举维度表:可进行枚举的维度表,例如性别维度表。
层级维度表:存在字段需要设置层级关系,支持指标做上卷和下钻使用。例如国家、省份、市县等。
配置完成后,单击保存,维度表创建成功。
在维度建模左侧目录树相应的数据域或业务分类下,可查找并统一管理维度表。
oracle建立时间维度
你参考的例子是MS Sql Server的,@XX是变量的意思。我改写了一下,因为oracle没有identity自增,所以用了sequence。
首先建表:
CREATE TABLE time_by_day_dimension(
time_id int NOT NULL ,
the_date date NULL ,
the_day varchar2(15) NULL ,
the_month varchar2(15) NULL ,
the_year smallint NULL ,
day_of_month smallint NULL ,
week_of_year smallint NULL ,
month_of_year smallint NULL ,
fiscal_period varchar2(20) NULL
);
然后是创建序列:
create sequence seq_time_id start with 1 increment by 1 nocycle nocache ;
最后是过程:
create or replace
PROCEDURE Create_time_by_day_dimension
IS
WeekString varchar(12);
dDate DATE;
sMonth varchar(20);
iYear smallint;
iDayOfMonth smallint;
iWeekOfYear smallint;
iMonthOfYear smallint;
adddays int;
BEGIN
adddays := 1 ;
dDate := to_date('01/01/2006','mm/dd/yyyy');
WHILE (dDate to_date('12/31/2010','mm/dd/yyyy'))
loop
WeekString := to_char(dDate, 'day'); --星期几
sMonth:=to_char(dDate, 'mm');--月份
iYear:= to_char(dDate, 'yyyy');--年
iDayOfMonth:=to_char(dDate, 'dd');--日(字符型)
iWeekOfYear:= to_char(dDate,'fmww');--年的第几周
iMonthOfYear:=to_number(sMonth);--日(数字型)
INSERT INTO time_by_day_dimension(time_id,the_date, the_day, the_month, the_year, day_of_month, week_of_year, month_of_year)
VALUES (seq_time_id.nextval,dDate, WeekString, sMonth, iYear, iDayOfMonth, iWeekOfYear, iMonthOfYear);
dDate := dDate + adddays;
END loop;
end;
最后少了一个字段:季度。你再学习添加一下吧!
名称栏目:维度表怎么建Oracle,维度表的作用
分享路径:http://lswzjz.com/article/heishi.html