Je suis issu du monde SQL Datawarehouse où, à partir d'un flux plat, je génère des tables de dimension et de faits. Dans les projets généraux d'entrepôt de données, nous divisons l'alimentation en faits et en dimensions. Ex:Générer un schéma en étoile dans une ruche
Je suis complètement nouveau pour Hadoop et je suis venu pour savoir que je peux construire l'entrepôt de données dans la ruche. Maintenant, je suis familier avec l'utilisation de guid qui, je pense, est applicable en tant que clé primaire dans la ruche. Donc, la stratégie ci-dessous est la bonne façon de charger le fait et la dimension dans la ruche?
- Charger les données source dans une table de ruche; disons Sales_Data_Warehouse
Générer Dimension à partir de sales_data_warehouse; ex:
SELECT New_Guid(), Customer_Name, Customer_Address De Sales_Data_Warehouse
Lorsque toutes les dimensions sont faites ensuite charger la table de fait comme
SELECT New_Guid() AS 'Fact_Key', Customer.Customer_Key, Magasin .Store_Key ... dE 'source' Sales_Data_Warehouse AS REJOIGNEZ Customer_Dimension client sur source.Customer_Name = Customer.Customer_Name ET source.Customer_Address = Customer.Customer_Address REJOIGNEZ Store_Dimension AS 'Store' ON Store.Store_Name = Source.St ore_Name JOIN produit 'Product_Dimension AS ON .....
Est-ce la façon dont je devrais charger mon fait et une table de dimension dans la ruche? En outre, dans les projets d'entrepôt général, nous devons mettre à jour les attributs de dimensions (ex: Customer_Address est changé en quelque chose d'autre) ou mettre à jour la clé étrangère de table de faits (rarement, mais cela arrive). Alors, comment puis-je avoir une charge INSERT-UPDATE dans la ruche. (Comme nous le faisons Lookup dans SSIS ou MERGE Statement dans TSQL)?
La façon dont vous faites est correcte. Hive prend en charge la requête de mise à jour à partir de la version 0.14 –
Il n'y a pas de concepts clés –
si les noms des clients sont modifiés, alors vous devez mettre à jour les deux tableaux "client" table et table dérivée –