Sql “如何”;“创建视图”;作品

Sql “如何”;“创建视图”;作品,sql,powerbi,create-view,Sql,Powerbi,Create View,我是这里的新手。我有个问题需要你的帮助 这是我的上下文:我有一个包含100 mil数据行的表。我需要从这个表生成报告。我使用Power BI,使用直接导入,并在Power BI中编写SQL语句。当数据加载到Power BI时,它会减少到20 mil行(因为我在SQL语句中使用了GROUP BY)。但是Power BI的性能非常糟糕。在我看来,Power BI必须运行查询语句,然后可视化数据,因此其性能很差 这是我的解决方案:我将在数据库中创建视图(使用GROUPBY语句)。因此,运行查询工作负载

我是这里的新手。我有个问题需要你的帮助

这是我的上下文:我有一个包含100 mil数据行的表。我需要从这个表生成报告。我使用Power BI,使用直接导入,并在Power BI中编写SQL语句。当数据加载到Power BI时,它会减少到20 mil行(因为我在SQL语句中使用了GROUP BY)。但是Power BI的性能非常糟糕。在我看来,Power BI必须运行查询语句,然后可视化数据,因此其性能很差

这是我的解决方案:我将在数据库中创建视图(使用GROUPBY语句)。因此,运行查询工作负载不再属于Power BI。我的数据库将负责执行SQL语句。而powerbi只需要可视化数据,因此powerbi的性能会更好

以下是我的问题:

1-我的解决方案有效吗?:)

2-如果我的解决方案有效,我的数据库只需要运行CREATEVIEW语句一次,以后就不需要再运行它了,对吗

3-如果我的解决方案有效,SQL运行工作负载将从Power BI转移到我的数据库,对吗


提前谢谢。

我不知道powerBI,但是如果使用view,它会在每次调用中执行view中的查询。您可以尝试物化视图而不是视图。但请注意,物化视图在创建或重新设置时间时具有数据快照

例如,视图MY_MATERIALIZED_视图每天都在刷新

create materialized view MY_MATERIALIZED_VIEW
build immediate
refresh force
on demand
start with sysdate next sysdate + 1
as
....query

当您使用导入模式时,您的数据库将被查询一次(在刷新时),但是视图仍然需要进行聚合,并且从视图中选择与使用group by选择之间没有区别(视图只是一个很好的打包查询,最好将视图具体化或使用日常作业填充标准表)

最好删除比X早的未使用的列和行(如果可能,也可以聚合)

考虑使用增量刷新来缩短负载


Power BI Premium、每用户Premium、Power BI Pro和Power BI嵌入式数据集支持增量刷新。

请注意,具体化视图是特定于产品的。并非所有产品(例如SQL Server)都支持它们(以该名称/具有特定功能)。物化视图不会帮助导入模型中的性能。这将加快导入过程,但无论如何您都需要花费时间来刷新视图。所以它实际上一点帮助都没有,它实际上是有帮助的。您不必每次执行时都刷新视图。甚至有些客户也需要过去一段时间的数据报告,例如最后一天的销售额。我说了“如果您使用view,它会在view中执行每个调用中的查询。”还提到了“物化视图具有数据快照”。如果您阅读了这个问题,那么问题是关于Power BI导入模型内的性能。具体化的观点无助于此。总的来说,它甚至对导入时间没有帮助,因为您必须首先实现它。当您在Power BI中针对导入模型运行报告时,报告是针对导入的数据而不是数据库运行的。1。二号。三号。不,它已经是,因为您正在使用查询。简言之,在power bi中运行查询与使用该查询创建视图并从power bi调用该视图之间没有区别。如果您的数据库支持物化视图,这将有助于提高性能,但要意识到数据将是快照,而不是实时数据。如果您这样做,您将需要定期刷新物化视图。检查数据库文档。物化视图对导入模型的性能没有帮助。这将加快导入过程,但无论如何您都需要花费时间来刷新视图。所以这真的一点帮助都没有。