Powerbi 使用Power BI矩阵从DAX语句中获取数据

Powerbi 使用Power BI矩阵从DAX语句中获取数据,powerbi,dax,Powerbi,Dax,我有以下要求: 用户将在网页上看到Power BI矩阵(与Power BI桌面相反) 网页应该有三个元素:文本字段、按钮和Power BI矩阵(可能包含在Power BI报告中) 用户将在文本字段中输入DAX语句,然后单击按钮指示矩阵获取DAX语句、执行它并填充数据 用户应该能够在矩阵中向下搜索 用户可以重新输入新的DAX语句,刷新矩阵 现在,我可以找到的所有文档,例如,讨论Power BI Desktop中的矩阵(即非网页)以及通过手动选择表/列/度量(在屏幕右侧)获取的数据 在Power

我有以下要求:

  • 用户将在网页上看到Power BI矩阵(与Power BI桌面相反)
  • 网页应该有三个元素:文本字段、按钮和Power BI矩阵(可能包含在Power BI报告中)
  • 用户将在文本字段中输入DAX语句,然后单击按钮指示矩阵获取DAX语句、执行它并填充数据
  • 用户应该能够在矩阵中向下搜索
  • 用户可以重新输入新的DAX语句,刷新矩阵
现在,我可以找到的所有文档,例如,讨论Power BI Desktop中的矩阵(即非网页)以及通过手动选择表/列/度量(在屏幕右侧)获取的数据

在Power BI Studio中,我知道我可以通过在顶部栏中创建一个表来输入DAX语句,例如,如果我有DAX:

 EVALUATE TOPN (3, branches)
我可以创建一个表格来填充矩阵:

BranchesTable = TOPN (3, branches)

但是,如何将运行时定义的DAX语句动态链接到网页上的矩阵?

这目前不可能完全实现您想要的功能。您可以动态地更改数据源并更新特定报表中使用的查询,但没有可用的API(PowerBI REST或PowerBI JavaScript)来更新报表中可视化视图上的哪些列。您可以非常接近您想要的内容,但报告不能以
查看
模式显示,它必须以
编辑
模式显示,因此用户可以在提交更改时手动将更新的DAX查询结果生成的字段拖到可视矩阵上

假设您已经完成了必要的应用程序注册设置和配置,并且您已经准备好在此处嵌入,下面是一些步骤,以接近您想要的内容。如果您还没有准备好嵌入,那么在我提供的8个步骤下面有一些文档,可以完成能够嵌入的先决条件设置

  • 使用PowerBI Desktop创建一个模板报表,该报表具有可视矩阵并连接到要使用的数据源确保使用特定查询设置此报表,而不是使用数据源中的所有表(无论是SQL还是SSAS)。(在报表中最初设置数据源时,您可以在“高级选项”下指定查询)
  • 为报表使用的数据源设置Power BI数据网关
  • 在PowerBI.com上创建工作区以将报告上载到
  • 使用PowerBI桌面将在步骤1中创建的报告发布到在步骤3中创建的工作区
  • 在Web应用程序上,当用户查看报表查看器页面时,您需要一种识别每个用户的方法。假设您有
    UserId
    字段,该字段是每个用户的唯一ID。在组中调用GetReports。您需要有一个已知的报告名和用户ID。让我们假设它是动态的。因此,调用GetReports并检查尝试在web应用程序中查看报表查看器页面的用户是否存在
    DynamicReport\u UserId
  • 在步骤5的API调用结果中,如果用户不存在报告,请使用克隆在步骤4中发布的模板报告
  • 为用户嵌入和显示特定于用户的模板报告(DynamicReport\u UserId)
  • 在报表查看器页面上具有逻辑,以便用户可以提交和发布DAX查询。当他们进行提交时,后端可以使用逻辑来更新报告中的数据源,然后使用DAX语句和更改的数据再次嵌入报告
  • visual Studio不会自动更新用户提交的新查询中的新字段,但在编辑器模式下可用的数据字段将发生更改。用户必须将字段从DAX查询拖放到矩阵视觉或他们将要使用的任何视觉类型上。您将无法仅在
    视图
    模式下显示报告,因为您无法通过编程方式更新visual Studio上的字段。由于更改的查询和以前使用的查询中的可视引用字段,用户甚至可能最终看到一个损坏的可视对象。您可以使用PowerBIJavaScriptAPI来隐藏现有的视觉效果,以改善用户在没有看到损坏的东西时的用户体验

    如果您对这些API调用或如何使用它们有任何具体问题,请告诉我

    这里是我一直在寻找Power BI JavaScript功能的地方(找不到任何特定于矩阵视觉效果的东西。视觉效果的JavaScript功能是视觉效果的通用功能,而不是矩阵或卡片之类的视觉类型)

    下面是微软关于可用RESTAPI和

    这里有一些很好的资源来了解有关嵌入的更多信息

    如果需要向下钻取功能,层次结构是一个很好的选择


    每个用户可以有一份报告,而每个报告上只能有一个矩阵吗?然后,我不需要进行清理,只要在用户每次加载页面时重新创建矩阵一件不清楚的事情是,
    用户为什么必须拖动从其DAX查询生成的字段
    ,这是否意味着该过程将有两个步骤(1)更新数据源,以及(2)选择显示哪些字段?没有Javascript API来操纵矩阵?谢谢,有专门操纵矩阵的Javascript API的链接吗?我找不到。至少当用户运行新的DAX语句并丢弃旧字段时,我可以清除矩阵吗?最后一个问题,是否确认这将在Azure Power BI上工作?您希望输入哪种DAX语句?您使用的是
    DirectQuery
    还是静态数据集?如果需要几个预先确定的视图(例如,TopN分支,其中用户提供了N),则无需重新填充data@Stac