用Python还是SQL计算?

时间:2018-09-28 15:13:04

标签: python sql-server

我是金融界的数据分析师,因此我们始终需要在Excel中进行大量计算。例如。在Excel中,公式很容易编写公式,但是我们希望将这些计算结果存储在SQL数据库中,以便将这些结果推送到仪表板上。我这样做的一种方法是直接在SQL Server中编写SQL并获取结果。另一种方法是使用Python运行计算并将结果推回数据库。

编码在这里并不重要,但是我附加了我在SQL Server中编写的代码。至少它表明SQL允许我执行复杂的计算。我知道Python也可以做到这一点。因此,我正在努力的是,在计算比率/指标,SQL脚本或Python方面哪种方法最好?我的猜测是Python具有更好的性能,但是通过编写SQL,您不必担心数据连接问题,因为您可以在数据库中使用它。您还可以利用数据库工具中的功能,例如,在数据库内部设置触发器,以便知道何时运行特定功能。

欢迎任何想法,并在此先多谢!

下面是使用SQL计算权益负债的示例:

Create View View_Calc_DebtToEquity
As

with TotalLiabilitiesToEquity(TotalLiabilities,TotalEquity,TotalLiabilitiesTTM,   
TotalEquityTTM, DebtToEquity_Target, CompanyName, AnalysisName,   
CurrentYear, TheMonth)
As (
Select TotalLiabilities=Max(Case when CategoryDesc='Total   
Liabilities' and Rowtype='Type Total' and Statement='Balance Sheet'
then ActualAmount else Null end),
TotalEquity=Max(Case when CategoryDesc='Total Equity' and   
Rowtype='Total' and Statement='Balance Sheet' then ActualAmount
else Null end),
TotalLiabilitiesTTM=Max(Case when CategoryDesc='Total Liabilities'   
and Rowtype='Type Total' and Statement='Balance Sheet' then ActualTTM
else Null end),
TotalEquityTTM=Max(Case when CategoryDesc='Total Equity' and   
Rowtype='Total' and Statement='Balance Sheet' then ActualTTM
else Null end),
DebtToEquity_Target=Max(Case when CategoryDesc='Debt to   
Equity_Target' and Rowtype='Category' and Statement='Nonfinancial'   
then ActualAmount else Null end),
CompanyName, AnalysisName, CurrentYear, TheMonth
From dbo.DashboardFinalOutput
Group by CompanyName, AnalysisName, CurrentYear, TheMonth)

Select CategoryDesc='Debt to Equity',
   TheMTD=TotalLiabilities/nullif(TotalEquity,0),
   TheTTM=TotalLiabilitiesTTM/nullif(TotalEquityTTM,0),
   TheTarget=DebtToEquity_Target,
   CompanyName,AnalysisName,CurrentYear,TheMonth

From TotalLiabilitiesToEquity

1 个答案:

答案 0 :(得分:0)

最好的方法是什么,取决于您所运行的上下文。您是否受运行时资源的束缚,需要找到最高效的方法?

还要在业务本身之外思考-您的组织中哪种语言更受欢迎?会有其他人能够理解它的作用吗?哪个更具可读性/可审计性?