Dans l’article précédent Conseils normatifs pour la mise en œuvre d’un modèle de coffre-fort de données sur la plate-forme Databricks Lakehouse, nous avons expliqué les ideas de base du coffre-fort de données et fourni des conseils pour son utilisation sur Databricks. Nous avons de nombreux shoppers sur le terrain à la recherche d’exemples et d’une mise en œuvre facile du coffre-fort de données sur Lakehouse.
Dans cet article, nous visons à approfondir la mise en œuvre d’un Knowledge Vault sur la plate-forme Lakehouse de Databricks et à fournir un exemple en direct pour charger un modèle EDW Knowledge Vault en temps réel à l’aide Tableaux en direct Delta.
Voici les sujets de haut niveau que nous aborderons dans ce weblog :
- Pourquoi Knowledge Vault
- Coffre-fort de données à Lakehouse
- Implémentation d’un modèle de coffre-fort de données dans Databricks Lakehouse
- Conclusion
1. Pourquoi Knowledge Vault
L’objectif principal pour Coffre-fort de données est de construire un entrepôt de données moderne et évolutif dans le monde d’aujourd’hui. À la base, il utilise des hubs, des satellites et des liaisons pour modéliser le monde des affaires, ce qui permet un modèle de données et une structure stables (Hubs) mais flexibles (Satellites) qui résistent aux changements environnementaux. Les hubs contiennent des clés d’entreprise qui ne changeront probablement pas à moins que les changements d’activité de base et les associations entre les hubs ne constituent le squelette du modèle de coffre-fort de données, tandis que les satellites contiennent des attributs contextuels d’un hub qui pourraient être créés et étendus très facilement.
Veuillez vous référer ci-dessous pour une conception de haut niveau du modèle de coffre-fort de données, avec 3 avantages clés par conception :
- Permet un chargement parallèle efficace pour l’entrepôt de données d’entreprise automobile il y a moins de dépendance entre les tables du modèle, comme nous avons pu le voir ci-dessous, les hubs ou les satellites pour le shopper, le produit, la commande pourraient tous être chargés en parallèle.
- Préserver un model distinctive de la vérité dans le coffre-fort brut automobile il recommande d’insérer uniquement et de conserver les métadonnées supply dans la desk.
- De nouveaux concentrateurs ou satellites pourraient être facilement ajoutés au modèle de manière incrémentielle, permettant une mise sur le marché rapide pour la livraison d’actifs de données.

2. Coffre-fort de données à Lakehouse
Le Plate-forme Databricks Lakehouse prend très bien en cost le modèle Knowledge Vault, veuillez vous référer ci-dessous pour l’structure de haut niveau du modèle Knowledge Vault sur Lakehouse. Le robuste et évolutif Lac Delta Le format de stockage permet aux shoppers de créer un coffre-fort brut où les données non modifiées sont stockées, et un coffre-fort métier où les règles métier et la transformation sont appliquées si nécessaire. Les deux s’aligneront plus tôt sur la conception et bénéficieront donc des avantages d’un modèle de coffre-fort de données.

3. Implémentation d’un modèle de coffre-fort de données dans Databricks Lakehouse
Sur la base de la conception de la part précédente, le chargement des hubs, des satellites et des tables de liaisons est easy. Toutes les costs ETL peuvent se produire en parallèle automobile elles ne dépendent pas l’une de l’autre, par exemple, les tables de hub shopper et produit peuvent être chargées automobile elles ont toutes deux leurs seules clés métier. Et la desk customer_product_link, le satellite tv for pc shopper et le satellite tv for pc produit peuvent également être chargés en parallèle automobile ils ont tous les attributs requis de la supply.
Flux de données world
Veuillez vous référer au flux de données de haut niveau illustré dans Tableau Delta en direct pipeline ci-dessous. Pour notre exemple, nous utilisons les données TPCH qui sont couramment utilisées pour les références d’aide à la décision. Les données sont d’abord chargées dans la couche bronze et stockées au format Delta, puis elles sont utilisées pour remplir le Uncooked Vault pour chaque objet (par exemple hub ou satellites du shopper et des commandes, and so on.). Enterprise Vault est construit sur les objets de Uncooked Vault et les objets Knowledge mart (par exemple dim_customer, dim_orders, fact_customer_order ) pour les consommations de reporting et d’analyse.
Coffre-fort brut
Uncooked Vault est l’endroit où nous stockons les tables Hubs, Satellites et Hyperlinks qui contiennent les données brutes et conservent une model distinctive de la vérité. Comme nous avons pu le voir ci-dessous, nous créons une vue raw_customer_vw
basé sur raw_customer
et utiliser la fonction de hachage sha1(UPPER(TRIM(c_custkey)))
pour créer des colonnes de hachage pour vérifier l’existence ou la comparaison si nécessaire.
-- create uncooked buyer view and add hash columns for checking existence or comparability
CREATE STREAMING LIVE VIEW raw_customer_vw
COMMENT "RAW Buyer Knowledge View"
AS SELECT
sha1(UPPER(TRIM(c_custkey))) as sha1_hub_custkey,
sha1(concat(UPPER(TRIM(c_name)),UPPER(TRIM(c_address)),UPPER(TRIM(c_phone)),UPPER(TRIM(c_mktsegment)))) as hash_diff,
current_timestamp as load_ts,
"Buyer Supply" as supply,
c_custkey,
c_name,
c_address,
c_nationkey,
c_phone,
c_acctbal,
c_mktsegment,
c_comment
FROM STREAM(LIVE.raw_customer)
Une fois la vue shopper brute créée, nous l’utilisons pour créer respectivement un shopper concentrateur et des shoppers satellites avec l’exemple de code ci-dessous. Dans Delta Reside Desk, vous pouvez également configurer facilement attente de qualité des données (par exemple CONSTRAINT valid_sha1_hub_custkey EXPECT (sha1_hub_custkey IS NOT NULL) ON VIOLATION DROP ROW
) et utilisez qui définissent remark le pipeline traitera les problèmes de qualité des données définis par l’attente. Ici, nous supprimons toutes les lignes si elles n’ont pas de clé métier valide.
-- create hub buyer desk from the uncooked buyer view
CREATE OR REFRESH STREAMING LIVE TABLE hub_customer(
sha1_hub_custkey STRING NOT NULL,
c_custkey BIGINT NOT NULL,
load_ts TIMESTAMP,
supply STRING
CONSTRAINT valid_sha1_hub_custkey EXPECT (sha1_hub_custkey IS NOT NULL) ON VIOLATION DROP ROW,
CONSTRAINT valid_custkey EXPECT (c_custkey IS NOT NULL) ON VIOLATION DROP ROW
)
COMMENT " HUb CUSTOMER TABLE"
AS SELECT
sha1_hub_custkey,
c_custkey,
load_ts,
supply
FROM
STREAM(dwell.raw_customer_vw)
-- create satellite tv for pc buyer desk from uncooked buyer view
CREATE OR REFRESH STREAMING LIVE TABLE sat_customer(
sha1_hub_custkey STRING NOT NULL,
c_name STRING,
c_address STRING,
c_nationkey BIGINT,
c_phone STRING,
c_acctbal DECIMAL(18,2),
c_mktsegment STRING,
hash_diff STRING NOT NULL,
load_ts TIMESTAMP,
supply STRING NOT NULL
CONSTRAINT valid_sha1_hub_custkey EXPECT (sha1_hub_custkey IS NOT NULL) ON VIOLATION DROP ROW
)
COMMENT " SAT CUSTOMER TABLE"
AS SELECT
sha1_hub_custkey,
c_name,
c_address,
c_nationkey,
c_phone,
c_acctbal,
c_mktsegment,
hash_diff,
load_ts,
supply
FROM
STREAM(dwell.raw_customer_vw)
Les concentrateurs et les satellites des autres objets sont chargés de la même manière. Pour les tables de liens, voici un exemple à remplir lnk_customer_orders
basé sur raw_orders_vw
.
-- create buyer orders desk from the uncooked orders view
CREATE OR REFRESH STREAMING LIVE TABLE lnk_customer_orders
(
sha1_lnk_customer_order_key STRING NOT NULL ,
sha1_hub_orderkey STRING ,
sha1_hub_custkey STRING ,
load_ts TIMESTAMP NOT NULL,
supply STRING NOT NULL
)
COMMENT " LNK CUSTOMER ORDERS TABLE "
AS SELECT
sha1_lnk_customer_order_key,
sha1_hub_orderkey,
sha1_hub_custkey,
load_ts,
supply
FROM
STREAM(dwell.raw_orders_vw)
Coffre-fort d’entreprise
Une fois que les hubs, les satellites et les liens sont renseignés dans le Uncooked Vault, les objets Enterprise Vault peuvent être créés à partir de ceux-ci. Il s’agit d’appliquer des règles métier ou des règles de transformation supplémentaires sur les objets de données et de se préparer à une consommation plus facile à un stade ultérieur. Voici un exemple de building sat_orders_bv,
avec lequel order_priority_tier
est ajoutée en tant qu’info d’enrichissement de l’objet commandes dans le Enterprise Vault.
-- create satellite tv for pc order desk in enterprise vault from the satellite tv for pc orders desk in uncooked vault
CREATE OR REFRESH LIVE TABLE sat_orders_bv
(
sha1_hub_orderkey STRING NOT NULL ,
o_orderstatus STRING ,
o_totalprice decimal(18,2) ,
o_orderdate DATE,
o_orderpriority STRING,
o_clerk STRING,
o_shippriority INT,
order_priority_tier STRING,
supply STRING NOT NULL
)
COMMENT " SAT Order Enterprise Vault TABLE "
AS SELECT
sha1_hub_orderkey AS sha1_hub_orderkey,
o_orderstatus AS o_orderstatus,
o_totalprice AS o_totalprice,
o_orderdate AS o_orderdate,
o_orderpriority AS o_orderpriority,
o_clerk AS o_clerk,
o_shippriority AS o_shippriority,
CASE WHEN o_orderpriority IN ('2-HIGH', '1-URGENT') AND o_totalprice >= 225000 THEN 'Tier-1'
WHEN o_orderpriority IN ('3-MEDIUM', '2-HIGH', '1-URGENT') AND o_totalprice BETWEEN 120000 AND 225000 THEN 'Tier-2'
ELSE 'Tier-3'
END order_priority_tier,
supply
FROM
dwell.sat_orders
Magasin de données
Enfin, nous voyons des shoppers charger des vues ponctuelles de Knowledge Vault et des information marts pour une consommation facile dans la dernière couche. Ici, l’accent est mis sur la facilité d’utilisation et les bonnes performances en lecture. Pour la plupart des tableaux simples, il suffira de créer des vues au-dessus des hubs ou des satellites ou vous pouvez même charger un schéma en étoile approprié comme le modèle dimensionnel dans la couche finale. Voici un exemple qui crée une dimension shopper en tant que vue dim_customer
et la vue pourrait être utilisée par d’autres pour simplifier leurs requêtes.
-- create buyer dimension as view in information mart from the hub and satellite tv for pc buyer desk, ref nation and ref area desk
CREATE LIVE VIEW dim_customer
AS
SELECT
sat.sha1_hub_custkey AS dim_customer_key,
sat.supply AS supply,
sat.c_name AS c_name ,
sat.c_address AS c_address ,
sat.c_phone AS c_phone ,
sat.c_acctbal AS c_acctbal,
sat.c_mktsegment AS c_mktsegment,
sat.c_nationkey AS c_nationkey,
sat.load_ts AS c_effective_ts,
-- derived
nation.n_name AS nation_name,
area.r_name AS region_name
FROM LIVE.hub_customer hub
INNER JOIN LIVE.sat_customer sat
ON hub.sha1_hub_custkey = sat.sha1_hub_custkey
LEFT OUTER JOIN LIVE.ref_nation nation
ON (sat.c_nationkey = nation.n_nationkey)
LEFT OUTER JOIN LIVE.ref_region area
ON (nation.n_regionkey = area.r_regionkey)
L’un des problèmes courants avec le coffre-fort de données est qu’il se retrouve parfois avec trop de jointures, en particulier lorsque vous avez une requête ou un fait complexe qui nécessite des attributs de plusieurs tables. La recommandation de Databricks est de pré-joindre les tables et les métriques calculées stockées si nécessaire afin qu’elles n’aient pas à être reconstruites plusieurs fois à la volée. Voici un exemple de création d’une desk de faits fact_customer_order
basé sur plusieurs jointures et stocké sous forme de desk pour les requêtes répétables des utilisateurs professionnels.
-- create reality buyer order desk in information mart from the lnk_customer_orders, dim_order, dim_customer, ref_nation and ref_region
CREATE OR REFRESH LIVE TABLE fact_customer_order
AS
SELECT
dim_customer.dim_customer_key,
dim_orders.dim_order_key,
nation.n_nationkey AS dim_nation_key,
area.r_regionkey AS dim_region_key,
dim_orders.o_totalprice AS total_price,
dim_orders.o_orderdate AS order_date
FROM LIVE.lnk_customer_orders lnk
INNER JOIN LIVE.dim_orders dim_orders
ON lnk.sha1_hub_orderkey = dim_orders.dim_order_key
INNER JOIN LIVE.dim_customer dim_customer
ON lnk.sha1_hub_custkey = dim_customer.dim_customer_key
LEFT OUTER JOIN LIVE.ref_nation nation
ON dim_customer.c_nationkey = nation.n_nationkey
LEFT OUTER JOIN LIVE.ref_region area
ON nation.n_regionkey = area.r_regionkey
Configuration du pipeline Delta Reside Desk
Tout le code ci-dessus peut être trouvé ici. Les shoppers peuvent facilement orchestrer l’ensemble du flux de données en fonction de la configuration du pipeline Delta Reside Desk, la configuration ci-dessous est la façon dont j’ai configuré le pipeline dans mon environnement, cliquez sur Configuration DLT pour plus de détails sur la façon de configurer un Delta Reside Desk Pipeline votre flux de travail si nécessaire.
{
"id": "6835c6ad-42a2-498d-9037-25c9d990b380",
"clusters": (
{
"label": "default",
"autoscale": {
"min_workers": 1,
"max_workers": 5,
"mode": "ENHANCED"
}
}
),
"improvement": true,
"steady": false,
"channel": "CURRENT",
"version": "ADVANCED",
"photon": false,
"libraries": (
{
"pocket book": {
"path": "/Repos/prod/databricks-lakehouse/lakehouse-buildout/data-vault/TPC-DLT-Knowledge-Vault-2.0"
}
}
),
"identify": "DLT Knowledge Vault",
"storage": "dbfs:/pipelines/6835c6ad-42a2-498d-9037-25c9d990b380",
"configuration": {
"pipelines.enzyme.mode": "superior",
"pipelines.enzyme.enabled": "true"
},
"goal": "leo_lakehouse"
}
4. Conclusion
Dans ce weblog, nous avons découvert les principaux ideas de modélisation de Knowledge Vault et remark les mettre en œuvre à l’aide de Tableaux en direct Delta. Le Plate-forme Databricks Lakehouse prend en cost diverses méthodes de modélisation de manière fiable, efficace et évolutive, tout en Databrick SQL – notre entrepôt de données sans serveur – vous permet d’exécuter toutes vos functions BI et SQL sur le Lakehouse. Pour voir tous les exemples ci-dessus dans un flux de travail complet, veuillez consulter cet exemple.
Veuillez également consulter nos blogs connexes :