6.4 C
New York

Qu’est-ce qu’un modèle de coffre-fort de données et remark l’implémenter sur la plate-forme Databricks Lakehouse


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 :

  1. Pourquoi Knowledge Vault
  2. Coffre-fort de données à Lakehouse
  3. Implémentation d’un modèle de coffre-fort de données dans Databricks Lakehouse
  4. 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 :

  1. 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.
  2. 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.
  3. 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.
Modèle de coffre-fort de données, hubs, liens, satellites
Composants principaux du modèle de coffre-fort 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.

Un diagramme montre comment fonctionne le coffre-fort de données dans Lakehouse
Modèle de coffre-fort de données sur le Lakehouse

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.

Flux de données global

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_customeret 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 :

Commencez à construire vos modèles dimensionnels dans le Lakehouse

Essayez Databricks gratuitement pendant 14 jours.

Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles