IDM - Booking
Contents
- Dimension Tables
- dim_booking
- dim_booking_spaces
- dim_booking_spaces_attendees
- Calculated Tables
- cal_booking_spaces
Dimension Tables
dim_booking
Partition By: tenant_id
|
Column |
Type |
Mandatory |
UDM mapping |
Note |
|---|---|---|---|---|
|
booking_pk |
long |
True |
|
surrogate key as primary key |
|
id |
string |
True |
id |
uuid |
|
tenant_id |
string |
True |
tenant_id |
dim_tenant.id |
|
title |
string |
|
title |
|
|
start_time |
datetime |
True |
start_time |
|
|
end_time |
datetime |
True |
end_time |
|
|
booking_resource |
enum |
True |
booking_resource |
Enum: [“API“, “Calendar”, “Mobile”, “Web”] |
|
is_private |
boolean |
is_private |
||
|
request_time |
datetime |
request_time |
||
|
vc_id |
string |
vc_id |
||
|
recurrence_id |
int |
recurrence_id |
||
|
edw_start_time |
timestamp |
True |
|
ETL internal usage Azure eventhub system generated timestamp when a new UDM message is published and captured it’s used by ETL to incrementally transform UDM into IDM PowerBI should never use it for any report |
|
edw_row_is_last |
boolean |
ETL internal usage |
||
|
history_start_time |
timestamp |
True |
|
the timestamp from published UDM message mandatory header: timestamp ETL or PowerBI could use it to sort and order the data |
|
history_end_time |
timestamp |
|
|
the timestamp from published UDM optional message header history_time if data is historical data, otherwise, it’s 9999-12-31 00:00:00 similar as NULL |
|
row_is_current |
boolean |
True |
|
the row data is current or not. |
dim_booking_spaces
Partition By: tenant_id
|
Column |
Type |
Mandatory |
UDM mapping |
Note |
|---|---|---|---|---|
|
booking_spaces_pk |
long |
True |
|
surrogate key as primary key |
|
booking_id |
string |
True |
id |
dim_booking.id |
|
space_id |
string |
True |
space_id |
dim_space.id |
|
tenant_id |
string |
True |
tenant_id |
dim_booking.tenant_id |
|
space_booked_for |
enum |
|
space_booked_for |
Enum: ["Internal", "External"] |
|
booking_status |
enum |
|
booking_status |
Enum: ["booked", "inProgress", "end", "bumped", "deleted"] |
|
pending |
boolean |
|
pending |
|
|
check_in_time |
datetime |
|
check_in_time |
|
|
check_out_time |
datetime |
|
check_out_time |
|
|
bump_time |
datetime |
|
bump_time |
|
|
deletion_time |
datetime |
|
deletion_time |
|
|
is_all_day |
boolean |
|
is_all_day |
|
|
actual_start_time |
datetime |
|
actual_start_time |
|
|
actual_end_time |
datetime |
|
actual_end_time |
|
|
booking_type |
enum |
|
booking_type |
Enum: ["Internal", "External", "Client_meeting", "VIP"] |
|
attendee_count |
int |
|
attendee_count |
|
|
cost |
double |
|
cost |
|
|
country_code |
string |
|
country_code |
|
|
currency_code |
string |
|
currency_code |
|
|
clean_down_period |
int |
|
clean_down_period |
|
|
setup_period |
int |
|
setup_period |
|
|
edw_start_time |
timestamp |
True |
|
ETL internal usage |
|
edw_row_is_last |
boolean |
ETL internal usage |
||
|
history_start_time |
timestamp |
True |
|
|
|
history_end_time |
timestamp |
|
|
|
|
row_is_current |
boolean |
True |
|
the row data is current or not. |
dim_booking_spaces_attendees
Partition By: tenant_id
|
Column |
Type |
Mandatory |
UDM mapping |
Note |
|---|---|---|---|---|
|
booking_spaces_attendees_pk |
long |
True |
|
surrogate key as primary key |
|
booking_id |
string |
True |
dim_booking_spaces.booking_id |
|
|
space_id |
string |
True |
space_id |
dim_booking_spaces.space_id |
|
tenant_id |
string |
True |
tenant_id |
dim_booking_spaces.tenant_id |
|
person_id |
string |
person_id |
dim_platform_user.id mandatory when space type is ME and space_booked_for is Internal |
|
|
first_name |
string |
first_name |
||
|
last_name |
string |
last_name |
||
|
|
string |
True |
|
|
|
edw_start_time |
timestamp |
True |
|
ETL internal usage |
|
edw_row_is_last |
boolean |
ETL internal usage |
||
|
history_start_time |
timestamp |
True |
|
|
|
history_end_time |
timestamp |
|
|
|
|
row_is_current |
boolean |
True |
|
the row data is current or not. |
Calculated Tables
[1]Denormalize booking related data into one calculate table to facilitate Power BI data marts
cal_booking_spaces
Description: merge booking spaces with related hierarchy tables such as space, space type, section, floor, building, site, address and region together to facilitate BI reports. It’s implemented in incremental mode to boost its calculation performance. All data is live (row_is_current is true). It includes deleted bookings identified by dim_booking_spaces.booking_status, and booking deletion data is required by booking dashboards.
Partition By: tenant_id, start_date
|
Column |
Type |
Mandatory |
UDM mapping |
Note |
|---|---|---|---|---|
|
booking_spaces_pk |
long |
True |
|
surrogate key as primary key |
|
booking_id |
string |
True |
|
dim_booking_spaces.booking_id |
|
tenant_id |
string |
True |
|
dim_booking_spaces.tenant_id |
|
space_id |
string |
True |
|
dim_booking_spaces.space_id |
|
space_name |
String |
|
|
dim_space.name |
|
booking_cost |
double |
|
|
dim_booking_spaces.cost |
|
is_pending |
boolean |
|
|
dim_booking_spaces.pending |
|
check_in_time |
timestamp |
|
|
dim_booking_spaces.check_in_time |
|
check_out_time |
timestamp |
|
|
dim_booking_spaces.check_out_time |
|
actual_start_time |
timestamp |
|
|
dim_booking_spaces.actual_start_time |
|
actual_end_time |
timestamp |
|
|
dim_booking_spaces.actual_end_time |
|
start_date |
date |
True |
|
to_date(dim_booking_spaces.actual_start_time) |
|
end_date |
date |
|
|
to_date(dim_booking_spaces.actual_end_time) |
|
attendee_count |
integer |
|
|
dim_booking_spaces.attendee_count |
|
space_booked_for |
string |
|
|
dim_booking_spaces.space_booked_for |
|
space_capacity |
integer |
|
|
dim_space.capacity |
|
space_type_id |
string |
|
|
dim_space_type.id |
|
space_type_name |
string |
|
|
dim_space_type.name |
|
space_type_usage |
string |
|
|
dim_space_type.usage |
|
is_desk_booking |
boolean |
|
|
when dim_space_type.usage=ME |
|
is_room_booking |
boolean |
|
|
when dim_space_type.usage=WE |
|
booking_category |
|
|
|
Enum: Bookings, Cancellations when dim_booking_spaces.booking_status=Bumped or Deleted → Cancellations, otherwise, Bookings |
|
site_id |
string |
|
|
dim_site.id |
|
site_name |
string |
|
|
dim_site.name |
|
building_address |
string |
|
|
Concat(building name, city, state and country) |
|
building_id |
string |
|
|
dim_building.id |
|
building_name |
string |
|
|
dim_building.name |
|
floor_id |
string |
|
|
dim_floor.id |
|
floor_name |
string |
|
|
dim_floor.name |
|
address_id |
string |
|
|
dim_address.id |
|
street |
string |
|
|
dim_address.street |
|
city |
string |
|
|
dim_address.city |
|
state |
string |
|
|
dim_address.state |
|
country |
string |
|
|
dim_address.country |
|
region_id |
string |
|
|
dim_region.id |
|
region_name |
string |
|
|
dim_region.name |
|
edw_start_time |
timestamp |
True |
|
dim_space.edw_start_time |
