首页 > 解决方案 > 如何基于 15 个字段连接 150 万行数据

问题描述

我有一个 2019 年销售数据的事实表,其中包含大约 150 万行数据。我需要将 2019 年的销售额与 2018 年的销售额进行比较。2018 年的销售事实表也有大约 150 万行数据。

每个事实表都有 15 个相同的列,其中包括日期、类别、部门、位置等字段。

日期 字段 1 字段 2.. …字段 15 销售量
01.01.18 美国广播公司 XYZ A12 100
01.02.18 A B C D XXY A13 200
01.03.18 ABB XYY A14 300
01.04.18 ACC ZXX A15 400
日期 字段 1 字段 2.. …字段 15 销售量
19 年 1 月 1 日 美国广播公司 XYZ A12 110
01.02.19 A B C D XXY A13 210
01.03.19 ABB XYY A14 310
01.04.19 ACC ZXX A15 410

我需要将 2018 年的销售额和 2019 年的销售额放在相邻的两列中。

我已经通过左连接(匹配正确映射所需的最小字段数量)尝试了这个,但后来我的电脑内存不足。我也尝试通过 power pivot 执行此操作,但我的 PC 在尝试将第二个事实表加载到数据模型时也耗尽了能量。

如何在彼此相邻的列中拥有正确映射的 2018 年销售额和 2019 年销售额?

日期 '18 日期 '19 字段 1 字段 2.. …字段 15 2018 年销售额 2019 年销售额
01.01.18 19 年 1 月 1 日 美国广播公司 XYZ A12 100 110
01.02.18 01.02.19 A B C D XXY A13 200 210
01.03.18 01.03.19 ABB XYY A14 300 310
01.04.18 01.04.19 ACC ZXX A15 400 410

标签: excelpowerbidaxpowerquerypowerpivot

解决方案


假设 csv 数据通过数据 > 获取外部 > 从文本导入到 Sheet2(2018) 和 Sheet3(2019)。把它放在工作表 A1 中:

=OFFSET(INDIRECT(CHOOSE(2-MOD(COLUMN(),2),"Sheet2","Sheet3")&"!A1",TRUE),ROW()-1,INT(COLUMN()/2+0.5)-1)

并向右+向下拖动。

想法:使用column()withmod()来“驱动”offset单元格选择。choose()进行工作表选择。

请分享它是否有效/无效。( :


推荐阅读