这是我在这里的第一篇文章,很高兴成为我已经关注了很长时间的社区的一员!尽管有研究,我还没有找到关于这个特定主题的信息,所以我在这里。
我分析交易数据以了解财务利润率的发展,分离不同的影响,如数量,组合,价格,成本等。 该分析需要在不同的粒度级别进行,例如,限于某一地理范围或特定产品类别。 (可能达到80k +分析水平)
我需要在一个批次中计算这些结果,以将它们存储到Excel工具中。
这样做:
我有一个第一个程序(带有索引,连接等的450行)和10个输入变量,返回一个单行表,其中包含1级分析所需的输出(在上面提到的80k +中)。它目前需要45秒才能运行。 [努力减少时间 - 单独的问题]
我想估计80k +输入排列的第一个程序。我在下面的代码的第二部分运行在一个简单的输入集上。但是,处理所有排列需要很长时间......
还有其他更快的方法吗?例如考虑可能的排列表和事务数据之间的连接? 你会做些什么来提高性能?
declare @TimeframeVar varchar(55)
declare @EndMonthVar float
declare @EndPeriodVar float
declare @BUVar varchar(55)
...
declare @RegionVar varchar(55)
declare @BranchVar varchar(55)
...
declare @ProductCategoryVar varchar(55)
...
drop table #Variables
Select *
into #variables
from xx.Variables
while exists (select top 1 * from #variables)
BEGIN
set @TimeframeVar = ( select top 1 Timeframe from #Variables )
set @EndMonthVar = ( select top 1 EndMonth from #Variables )
set @EndPeriodVar = ( select top 1 EndPeriod from #Variables )
set @BUVar = ( select top 1 BU from #Variables )
...
set @RegionVar = ( select top 1 Region from #Variables )
set @BranchVar = ( select top 1 Branch from #Variables )
...
set @ProductCategoryVar = ( select top 1 ProductCategory from #Variables )
...
exec xx.MarginAnalysis_XX
@TimeframeVar
,@EndMonthVar
,@EndPeriodVar
,@BUVar
...
,@RegionVar
,@BranchVar
...
,@ProductCategoryVar
...
Delete from #variables
where Timeframe = @TimeframeVar
and EndMonth = @EndMonthVar
and EndPeriod = @EndPeriodVar
and BU = @BUVar
...
and region = @RegionVar
and Branch = @BranchVar
...
and productcategory = @ProductCategoryVar
and ordersize = @OrderSizeVar
...
END
非常感谢你的帮助!
编辑:
预期最终输出(80k +行)
+-------------+-----------+--------+-------+-----+-------------+
| Granularity | MarginIni | Volume | Price | ... | MarginFinal |
+-------------+-----------+--------+-------+-----+-------------+
| A | 100 | +20 | -30 | | 90 |
+-------------+-----------+--------+-------+-----+-------------+
| B | 200 | 150 | -30 | | 320 |
+-------------+-----------+--------+-------+-----+-------------+
| C | .. | ... | ... | | ... |
+-------------+-----------+--------+-------+-----+-------------+
INPUT FROM 1st PROC (有1行)
+-------------+-----------+--------+-------+-----+-------------+
| Granularity | MarginIni | Volume | Price | ... | MarginFinal |
+-------------+-----------+--------+-------+-----+-------------+
| A | 100 | +20 | -30 | | 90 |
+-------------+-----------+--------+-------+-----+-------------+