mirror of
https://github.com/datahub-project/datahub.git
synced 2025-11-13 01:38:35 +00:00
47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import logging
|
|
import os
|
|
|
|
from datahub.emitter.mcp import MetadataChangeProposalWrapper
|
|
from datahub.emitter.rest_emitter import DatahubRestEmitter
|
|
from datahub.metadata._urns.urn_defs import GlossaryNodeUrn
|
|
from datahub.metadata.schema_classes import GlossaryNodeInfoClass
|
|
|
|
log = logging.getLogger(__name__)
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
# First, ensure the parent node exists (Finance)
|
|
parent_node_urn = GlossaryNodeUrn("Finance")
|
|
parent_node_info = GlossaryNodeInfoClass(
|
|
definition="Top-level category for financial metrics and terms",
|
|
name="Finance",
|
|
)
|
|
|
|
parent_event = MetadataChangeProposalWrapper(
|
|
entityUrn=str(parent_node_urn),
|
|
aspect=parent_node_info,
|
|
)
|
|
|
|
# Create a nested child node under Finance
|
|
child_node_urn = GlossaryNodeUrn("RevenueMetrics")
|
|
child_node_info = GlossaryNodeInfoClass(
|
|
definition="Metrics related to revenue recognition and reporting",
|
|
name="Revenue Metrics",
|
|
parentNode=str(parent_node_urn), # Set the parent relationship
|
|
)
|
|
|
|
child_event = MetadataChangeProposalWrapper(
|
|
entityUrn=str(child_node_urn),
|
|
aspect=child_node_info,
|
|
)
|
|
|
|
# Emit both to DataHub
|
|
rest_emitter = DatahubRestEmitter(
|
|
gms_server=os.getenv("DATAHUB_GMS_URL", "http://localhost:8080"),
|
|
token=os.getenv("DATAHUB_GMS_TOKEN"),
|
|
)
|
|
rest_emitter.emit(parent_event)
|
|
rest_emitter.emit(child_event)
|
|
|
|
log.info(f"Created parent glossary node {parent_node_urn}")
|
|
log.info(f"Created child glossary node {child_node_urn} under {parent_node_urn}")
|