使用 Top n In 查询的 SSAS 开发

SSAS Development Using Top n In Queries

我对 SSAS 开发相当陌生,当现有团队通过现有 SSAS 项目给我一个 运行 时,他们提到每个查询都有一个 SELECT TOP *n* 然后他们手动进入 XML 文件并在他们准备好迁移到生产环境时注释掉(并确保您选择一个没有其他人使用的 n)。

这样做是因为在查询中没有 TOP n 时,将数据导入 Visual Studio 花费的时间太长。

这真的是最佳实践吗?还是有更好的方法来设置开发环境,这样您就不必在部署前注释掉代码?

我假设您正在谈论 Analysis Services Tabular,它确实会在设计时将数据加载到您 "workspace database" 的内存中,这通常是本地 Analysis Services Tabular 实例。

您可以考虑创建一个 SQL 视图层并在视图之上构建 Analysis Services 模型。此处提及此建议的原因如下: http://www.jamesserra.com/archive/2013/03/benefits-of-using-views-in-a-bi-solution/

但是SELECT TOP X 可能还不够。例如,如果 SELECT TOP 100 * FROM FactSales only returns 西南部商店的事实行,但 SELECT TOP 100 * FROM DimStore only returns 东北商店,那么它开发您的模型和计算将具有挑战性,因为所有内容都将汇总到空白商店。因此,请考虑将一些更智能的过滤逻辑放入视图中。

听起来您想更改 SSRS 报告中的 MDX 语句。如果是这样的话,我不建议这样做。您还需要查看有关开发环境的报告的性能。当然,正如建议的那样,您可以减少数据的大小,但这有很大的缺点,因为您无法再预测生产环境的实际性能。

顺便说一句,前 n 个查询通常非常昂贵,因为必须针对整个集合计算结果,然后将其丢弃。因此,在 MDX 中使用 "top n" 来提高性能的优势非常有限。