如何基于Fcttbl及关联参考表的指定字段创建新表
实现方法:基于事实表关联多参考表创建新表
根据你描述的表结构(所有参考表仅与Fcttbl关联,彼此无直接关联),以下是主流工具中的实现方案:
一、SQL 环境下实现
通过多次LEFT JOIN将各参考表与事实表关联,直接生成新表:
-- SQL Server 语法示例 SELECT Fcttbl.ID, Ref_Product.Product, Ref_Country.Country, Ref_Category.Category, Ref_Subcategory.Color INTO New_Combined_Table FROM Fcttbl -- 替换为实际的关联键,比如Fcttbl.Product_ID = Ref_Product.ID LEFT JOIN Ref_Product ON Fcttbl.Product_Key = Ref_Product.Product_Key LEFT JOIN Ref_Country ON Fcttbl.Country_Key = Ref_Country.Country_Key LEFT JOIN Ref_Category ON Fcttbl.Category_Key = Ref_Category.Category_Key LEFT JOIN Ref_Subcategory ON Fcttbl.Subcategory_Key = Ref_Subcategory.Subcategory_Key;
补充说明:
- 若仅需保留所有关联都存在的记录,将
LEFT JOIN替换为INNER JOIN - 不同数据库创建新表语法有差异:
- MySQL/Oracle:使用
CREATE TABLE New_Combined_Table AS SELECT ... - PostgreSQL:支持
CREATE TABLE New_Combined_Table AS SELECT ...或SELECT ... INTO New_Combined_Table
- MySQL/Oracle:使用
二、Power BI(DAX)实现
方案1:利用已建立的模型关系(推荐)
如果已在Power BI模型中为Fcttbl与各参考表建立一对多关系(Fcttbl为多方),可直接用RELATED函数提取字段:
New_Combined_Table = SELECTCOLUMNS ( Fcttbl, "ID", Fcttbl[ID], "Product", RELATED(Ref_Product[Product]), "Country", RELATED(Ref_Country[Country]), "Category", RELATED(Ref_Category[Category]), "Color", RELATED(Ref_Subcategory[Color]) )
方案2:无模型关系时用LOOKUPVALUE
无需预先建立关系,直接指定关联键匹配:
New_Combined_Table = ADDCOLUMNS ( Fcttbl, "Product", LOOKUPVALUE(Ref_Product[Product], Ref_Product[Product_Key], Fcttbl[Product_Key]), "Country", LOOKUPVALUE(Ref_Country[Country], Ref_Country[Country_Key], Fcttbl[Country_Key]), "Category", LOOKUPVALUE(Ref_Category[Category], Ref_Category[Category_Key], Fcttbl[Category_Key]), "Color", LOOKUPVALUE(Ref_Subcategory[Color], Ref_Subcategory[Subcategory_Key], Fcttbl[Subcategory_Key]) )
三、Excel 环境下实现
方案1:函数匹配(快速操作)
在新工作表中复制Fcttbl的ID列,然后用XLOOKUP(或VLOOKUP)匹配各字段:
- Product列公式:
=XLOOKUP([@ID], Ref_Product[关联键], Ref_Product[Product], "") - Country列公式:
=XLOOKUP([@ID], Ref_Country[关联键], Ref_Country[Country], "") - 以此类推完成所有字段匹配后,复制结果并粘贴为值,即可得到新表。
方案2:Power Query(适合大数据量)
- 导入所有表到Excel Power Query编辑器
- 以
Fcttbl为主表,依次选择合并查询,分别关联各参考表(选择对应关联键,保留所有主表记录) - 展开各合并后的列,仅保留需要的字段(Product、Country等)
- 关闭并上载数据到Excel,生成新表。
内容的提问来源于stack exchange,提问作者lifeofthenoobie
相关产品推荐
相关产品推荐

