Skip to content

Commit beab1f9

Browse files
authored
Add additional details to cube history (#1361)
* Add detailed history for cube node changes * Add more metadata to cube updates
1 parent 778d6c9 commit beab1f9

File tree

2 files changed

+113
-8
lines changed

2 files changed

+113
-8
lines changed

datajunction-server/datajunction_server/internal/nodes.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,24 @@ async def update_cube_node(
851851
new_cube_revision.node.current_version = new_cube_revision.version # type: ignore
852852

853853
await save_history(
854-
event=node_update_history_event(new_cube_revision, current_user),
854+
event=History(
855+
entity_type=EntityType.NODE,
856+
entity_name=new_cube_revision.name,
857+
node=new_cube_revision.name,
858+
activity_type=ActivityType.UPDATE,
859+
details={
860+
"version": new_cube_revision.version, # type: ignore
861+
},
862+
pre={
863+
"metrics": old_metrics,
864+
"dimensions": old_dimensions,
865+
},
866+
post={
867+
"metrics": new_cube_revision.cube_node_metrics,
868+
"dimensions": new_cube_revision.cube_node_dimensions,
869+
},
870+
user=current_user.username,
871+
),
855872
session=session,
856873
)
857874

@@ -1322,7 +1339,7 @@ async def create_new_revision_from_existing(
13221339
if catalogs:
13231340
new_revision.catalog_id = catalogs[0]
13241341
new_revision.columns = node_validator.columns or []
1325-
if new_revision.type == NodeType.METRIC:
1342+
if new_revision.type == NodeType.METRIC and new_revision.columns:
13261343
new_revision.columns[0].display_name = new_revision.display_name
13271344

13281345
# Update the primary key if one was set in the input

datajunction-server/tests/api/cubes_test.py

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,8 +1590,34 @@ async def test_updating_cube(
15901590
"entity_type": "node",
15911591
"id": mock.ANY,
15921592
"node": "default.repairs_cube_6",
1593-
"post": {},
1594-
"pre": {},
1593+
"post": {
1594+
"dimensions": [
1595+
"default.hard_hat.city",
1596+
"default.hard_hat.hire_date",
1597+
],
1598+
"metrics": [
1599+
"default.discounted_orders_rate",
1600+
],
1601+
},
1602+
"pre": {
1603+
"dimensions": [
1604+
"default.hard_hat.country",
1605+
"default.hard_hat.postal_code",
1606+
"default.hard_hat.city",
1607+
"default.hard_hat.hire_date",
1608+
"default.hard_hat.state",
1609+
"default.dispatcher.company_name",
1610+
"default.municipality_dim.local_region",
1611+
],
1612+
"metrics": [
1613+
"default.discounted_orders_rate",
1614+
"default.num_repair_orders",
1615+
"default.avg_repair_price",
1616+
"default.total_repair_cost",
1617+
"default.total_repair_order_discounts",
1618+
"default.double_total_repair_cost",
1619+
],
1620+
},
15951621
"user": mock.ANY,
15961622
},
15971623
{
@@ -1602,8 +1628,44 @@ async def test_updating_cube(
16021628
"entity_type": "node",
16031629
"id": mock.ANY,
16041630
"node": "default.repairs_cube_6",
1605-
"post": {},
1606-
"pre": {},
1631+
"post": {
1632+
"dimensions": [
1633+
"default.hard_hat.country",
1634+
"default.hard_hat.postal_code",
1635+
"default.hard_hat.city",
1636+
"default.hard_hat.hire_date",
1637+
"default.hard_hat.state",
1638+
"default.dispatcher.company_name",
1639+
"default.municipality_dim.local_region",
1640+
],
1641+
"metrics": [
1642+
"default.discounted_orders_rate",
1643+
"default.num_repair_orders",
1644+
"default.avg_repair_price",
1645+
"default.total_repair_cost",
1646+
"default.total_repair_order_discounts",
1647+
"default.double_total_repair_cost",
1648+
],
1649+
},
1650+
"pre": {
1651+
"dimensions": [
1652+
"default.hard_hat.country",
1653+
"default.hard_hat.postal_code",
1654+
"default.hard_hat.city",
1655+
"default.hard_hat.hire_date",
1656+
"default.hard_hat.state",
1657+
"default.dispatcher.company_name",
1658+
"default.municipality_dim.local_region",
1659+
],
1660+
"metrics": [
1661+
"default.discounted_orders_rate",
1662+
"default.num_repair_orders",
1663+
"default.avg_repair_price",
1664+
"default.total_repair_cost",
1665+
"default.total_repair_order_discounts",
1666+
"default.double_total_repair_cost",
1667+
],
1668+
},
16071669
"user": mock.ANY,
16081670
},
16091671
]
@@ -1850,8 +1912,34 @@ async def test_updating_cube_with_existing_materialization(
18501912
"entity_type": "node",
18511913
"id": mock.ANY,
18521914
"node": "default.repairs_cube_2",
1853-
"post": {},
1854-
"pre": {},
1915+
"post": {
1916+
"dimensions": [
1917+
"default.hard_hat.city",
1918+
"default.hard_hat.hire_date",
1919+
],
1920+
"metrics": [
1921+
"default.discounted_orders_rate",
1922+
],
1923+
},
1924+
"pre": {
1925+
"dimensions": [
1926+
"default.hard_hat.country",
1927+
"default.hard_hat.postal_code",
1928+
"default.hard_hat.city",
1929+
"default.hard_hat.hire_date",
1930+
"default.hard_hat.state",
1931+
"default.dispatcher.company_name",
1932+
"default.municipality_dim.local_region",
1933+
],
1934+
"metrics": [
1935+
"default.discounted_orders_rate",
1936+
"default.num_repair_orders",
1937+
"default.avg_repair_price",
1938+
"default.total_repair_cost",
1939+
"default.total_repair_order_discounts",
1940+
"default.double_total_repair_cost",
1941+
],
1942+
},
18551943
"user": "dj",
18561944
},
18571945
{

0 commit comments

Comments
 (0)