重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
創建維度表時:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、虛擬主機、營銷軟件、網站建設、河東網站維護、網站推廣。
可以關聯本維度表是用于分析哪個業務分類、哪個數據域,便于后續直接查看具體某一數據域或數據集市下,有哪些維度表。
可以指定維度表后續在數據建模分析使用時,維度表的數據存儲于數倉中的哪個數據分層,一般情況下維度表可存儲于公共維度層(DIM層)。
維度表創建后,您可以將維度的屬性添加為維度表的字段,并對維度表進行關聯和分區的設置,使用統一的數據標準來進行字段設置,保障全數據域中的維度數據的屬性是一致的。
維度表配置完成后:
可物化至存儲引擎,后續在計算引擎中使用維度表進行數據分析。
在進行數據派生指標和匯總表的設計創建時,可直接關聯使用維度表中的維度。
創建維度表
進入維度建模。
登錄DataWorks控制臺。
在左側導航欄,單擊工作空間列表。
選擇工作空間所在地域后,單擊相應工作空間后的數據開發。
單擊左上方的圖標圖標,選擇全部產品 數據建模 維度建模,進入維度建模頁面。
創建維度表。
在維度建模頁面,鼠標懸停至加號圖標,單擊邏輯模型 創建維度表。
配置維度表的基本信息。
您可根據需求,選擇維度表所掛載的層級、數據域、業務分類、數據集市等信息,選擇后,后續可進入相應對象的列表查看所創建的維度表。創建維度表主要參數說明如下。
參數項 描述
存儲策略 維度表基于什么策略(即存儲數據的時間周期及數據量范圍)存儲數據。
維度 維度表關聯的維度,用于配置維度表分析數據的視角。
說明 創建維度,詳情請參見創建維度。
表名規則 通過已配置的檢查器規范維度表的命名規則。選擇檢查器后,該維度表的表名需按照檢查器定義的規則配置。
說明 配置檢查器,詳情請參見配置及使用數倉分層檢查器。
生命周期 維度表保留的時間周期。最大可保留36000天。
表類型 根據實際情況,選擇如下類型。
普通維度表:普通的維度表,無其他需求可選擇該類型。
枚舉維度表:可進行枚舉的維度表,例如性別維度表。
層級維度表:存在字段需要設置層級關系,支持指標做上卷和下鉆使用。例如國家、省份、市縣等。
配置完成后,單擊保存,維度表創建成功。
在維度建模左側目錄樹相應的數據域或業務分類下,可查找并統一管理維度表。
本文介紹數據倉庫中維度數據建模的過程描述,并舉一個示例以加深對相關概念的理解。
維度模型是數據倉庫領域大師Ralph Kimall所倡導,他的《數據倉庫工具箱》,是數據倉庫工程領域最流行的數倉建模經典。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模復雜查詢的響應性能。
1、通過對業務需求以及可用數據源的綜合考慮,確定對哪種業務過程開展建模工作
2、建立的第一個維度模型應該是一個最有影響的模型——它應該對最緊迫的業務問題作出回答,并且對數據的抽取來說是最容易的。
注:粒度是指數據倉庫的數據單位中保存數據的細化或綜合程度的級別,細化程度越高,粒度就越小
1、應該先優先考慮為業務處理獲取最有原子性的信息而開發維度模型。原子型數據是所收集的最詳細的信息,這樣的數據不能再做更進一步的細分。
2、數據倉庫幾乎總是要求在每個維度可能得到的最低粒度上對數據進行表示的原因,并不是因為查詢想看到每個低層次的行,而是因為查詢希望以很精確的方式對細節知識進行抽取。
一個經過仔細考慮的粒度定義確定了事實表的基本維度特性。同時,經常也可能向事實表的基本粒度加入更多的維度,而這些附加的維度會在基本維度的每個組合值方面自然地取得唯一的值。如果附加的維度因為導致生成另外的事實行而違背了這個基本的粒度定義,那么必須對粒度定義進行修改以適應這個維度的情景。
確定將哪些事實放到事實表中。粒度聲明有助于穩定相關的考慮。事實必須與粒度吻合。在考慮可能存在的事實時,可能會發現仍然需要調整早期的粒度聲明和維度選擇
維度建模中有一些比較重要的概念,理解了這些概念,基本也就理解了什么是維度建模。
額,看了這一句,其實是不太容易理解到底什么是事實表的。
比如一次購買行為我們就可以理解為是一個事實,下面我們上示例。
圖中的訂單表就是一個事實表,你可以理解他就是在現實中發生的一次操作型事件,我們每完成一個訂單,就會在訂單中增加一條記錄。
我們可以回過頭再看一下事實表的特征,在維度表里沒有存放實際的內容,他是一堆主鍵的集合,這些ID分別能對應到維度表中的一條記錄。
我們的圖中的用戶表、商家表、時間表這些都屬于維度表,這些表都有一個唯一的主鍵,然后在表中存放了詳細的數據信息。
下面我們將以電商為例,詳細講一下維度建模的建模方式,并舉例如果使用這個模型(這點還是很重要的)。
假設我們在一家電商網站工作,比如某寶、某東。我們需要對這里業務進行建模。下面我們分析幾點業務場景:
好,基于這幾點,我們來設計我們的模型。
下面就是我們設計出來的數據模型,和之前的基本一樣,只不過是換成了英文,主要是為了后面寫sql的時候來用。
我就不再解釋每個表的作用了,現在只說一下為什么要這樣設計。
首先,我們想一下,如果我們不這樣設計的話,我們一般會怎么做?
如果是我,我會設計下面這張表。你信不信,我能列出來50個字段!其實我個人認為怎么設計這種表都有其合理性,我們不論對錯,單說一下兩者的優缺點。
先說我們的維度模型:
再說我們這張大款表的優缺點:
數據模型的建立必須要為更好的應用來服務,下面我先舉一個例子,來切實地感受一下來怎么用我們的模型。
需求 :求出2016年在帝都的男性用戶購買的LV品牌商品的總價格。
實現 :
維度建模是一種十分優秀的建模方式,他有很多的優點,但是我們在實際工作中也很難完全按照它的方式來實現,都會有所取舍,比如說為了業務我們還是會需要一些寬表,有時候還會有很多的數據冗余。
為了使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結構:
你參考的例子是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;
最后少了一個字段:季度。你再學習添加一下吧!
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、步驟維度:在日志表里可以為行為順序進行編號,探究行為發生的過程,這個維度叫步驟維度