-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmerge_fact_units.sql
156 lines (128 loc) · 3.17 KB
/
merge_fact_units.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
-- "Merge" Dim_Factions
TRUNCATE TABLE tw_save_production..Dim_Factions ;
with step1 AS
(
select
distinct( faction )
,CHARINDEX( '_', faction ) as us_0
FROM tw_save_staging..export_army_unit_tk
)
,step2 AS (
select * ,
CHARINDEX( '_', faction, us_0 + 1 ) as us_1
FROM step1
),
step3 AS (
select * ,
CHARINDEX( '_', faction, us_1 + 1 ) as us_2
, LEN( faction ) as us_3
FROM step2
)
, split_cols_cte AS (
select
step3.faction as faction_NK
,SUBSTRING( faction, 0 , us_0 ) as game_source
,SUBSTRING( faction, us_0 + 1 , us_1 - us_0 - 1 ) as dlc_source
,SUBSTRING( faction, us_1 + 1 , us_2 - us_1 - 1) as faction
,SUBSTRING( faction, us_2 + 1 , LEN(faction) ) as lord
FROM step3
)
INSERT INTO tw_save_production..Dim_Factions (
faction_nk
,game_source
,dlc_source
,faction_name
,lord
)
select
faction_nk
,game_source
,dlc_source
,faction
,lord
from split_cols_cte
-- "Merge" Dim_Armies
TRUNCATE TABLE tw_save_production..Dim_Armies ;
INSERT INTO tw_save_production..Dim_Armies (
army_nk
,faction_id
)
select
distinct( army ) as army_nk
,dim_f.id as faction_id
from tw_save_staging..export_army_unit_tk as eau
INNER JOIN tw_save_production..Dim_Factions as dim_f
ON dim_f.faction_nk = eau.faction;
-- "Merge" Dim_Armies
TRUNCATE TABLE tw_save_production..Dim_Armies ;
INSERT INTO tw_save_production..Dim_Armies (
army_nk
,faction_id
)
select
distinct( army ) as army_nk
,dim_f.id as faction_id
from tw_save_staging..export_army_unit_tk as eau
INNER JOIN tw_save_production..Dim_Factions as dim_f
ON dim_f.faction_nk = eau.faction;
-- "Merge" Dim_Armies
TRUNCATE TABLE tw_save_production..Dim_Armies ;
INSERT INTO tw_save_production..Dim_Armies (
[army_nk]
,[faction_id]
)
select
distinct( army ) as army_nk
, NULL
FROM tw_save_staging..export_army_unit_tk as eau;
-- "Merge" Fact_UnitHistory
TRUNCATE TABLE tw_save_production..Fact_UnitHistory ;
with max_cte AS
(
select turn_num, max(modifiedOn) as maxModified
FROM export_army_unit_TK
group by turn_num
),
clean_cte AS
(
select
[unit_name]
,[strength]
,[max_strength]
,[army]
,[faction]
,[garrison_a]
,[garrison_b]
,[campaign_localized]
,[session_id]
,a.[turn_num] as turn_num
,[modifiedOn]
FROM max_cte as a
inner join export_army_unit_TK as b
ON a.turn_num = b.turn_num
AND a.maxModified = b.modifiedOn
)
INSERT INTO tw_save_production..Fact_UnitHistory (
strength
,max_strength
,unit_id
,army_id
,faction_id
,campaign_localized
,turn_id
)
select
strength
, max_strength
, du.id as unit_id
, da.id as army_id
, df.id as faction_id
, eau.campaign_localized
, eau.turn_num as turn_id
from clean_cte as eau
INNER JOIN tw_save_production..Dim_Factions as df
ON eau.faction = df.faction_nk
INNER JOIN tw_save_production..Dim_Units as du
ON eau.unit_name = du.unit_nk
INNER JOIN tw_save_production..Dim_Armies as da
ON eau.army = da.army_nk