【问题标题】:What is the best way to implement business logic & aggregation in an SQL database? [closed]在 SQL 数据库中实现业务逻辑和聚合的最佳方法是什么? [关闭]
【发布时间】:2020-09-24 08:49:11
【问题描述】:

目前我正在部分在 SQL 数据库中执行聚合和业务逻辑(连接、收入计算等),我想知道是否有通用的最佳实践?

【问题讨论】:

    标签: sql sql-server powerbi aggregation business-logic


    【解决方案1】:

    有了这么少的信息,很难给你正确的建议,但作为一般的经验法则,你可以在数据库层实现的业务逻辑越多越好。 SQL Server 适用于基于集合的计算和聚合,这通常是业务逻辑的基础。

    另一个优点是,通过在数据库中实现逻辑,您的数据/业务逻辑定义是一致的,并且可以基于业务在定义上签字。如果您不考虑该部分,那么当 2 位不同的分析师尝试在 Power BI 中创建相同的业务逻辑时,他们最终可能会得到稍微不同的实现,从而导致不同的结果。通过在后端实现它,两位分析师将获得相同的输出,无论如何。

    【讨论】:

    • 感谢@SchmitzIT 的回答 :) 那么您将如何在 SQL 中实现复杂的聚合呢?你会使用视图还是其他东西?
    • @KevinConseil - 这取决于您的需求。我的主要工作涉及数据仓库,其中复杂的聚合是一种标准做法。我们通常会保留计算,因为这样您只需进行一次聚合(而不是在有人执行视图时每次都在运行中执行它们)。但是,例如,这可能并不总是可行的(滚动平均值或实时场景中的最新当前库存数量)。所以这取决于你的业务需求、数据量等。
    • 坚持计算是什么意思?我使用视图实现了滚动平均值和累积计算,性能很糟糕。我真的很高兴知道其他可能性:)
    • @KevinConseil - 通过持久化,我的意思是我们将计算结果存储在数据库中。对于累积计算,这非常有效(您添加以前的累积值和您拥有的任何新值)。优点是计算只发生一次,您可以随时检查数据库在特定时间点的值是什么。对于滚动平均值,由于此类计算的性质,它可能有点棘手,但在这种情况下,您通常会将跨国历史记录保存在某个地方,以便在添加新数据后重复计算。
    • 好的,您使用哪种工具或方法来存储计算结果?我正在为我的 ETL 使用工作流工具,因此通常在我的情况下,您会使用此类工具进行一次计算,然后在修复表中实现它。我说的对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2017-12-24
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多