在PowerBI Desktop中,用户可以定义一个或多个查询参数(Query Parameter),参数的功能是为了实现PowerBI的参数化编程,使得Data Source的属性、替换值和过滤数据行可以参数化。注意:参数不管有多少个可能的值(Available Value),只能有一个当前值,所谓引用参数值,实际上是指引用参数的当前值(Current Value)。参数的当前值,只能在手动修改,不能动态变化。

我的PowerBI开发系列的文章目录:PowerBI开发

一,参数的属性

在查询编辑器(Query Editor)中,用户通过菜单“Manage Parameters”创建和管理参数,

参数有Name属性、当前值是否必需(Required)、参数值的数据类型(Type)、以及参数的建议值(Suggested Values)、当前值(Current Value)等属性。

如果勾选Required,那么Current Value必须赋值。参数最重要的属性是Suggested Values,共有三种类型:

  • Any Value:用于手动枚举参数的值
  • List of Values:指定一个List查询,参数的值是List查询的值
  • Query:参数的建议值是一个Query

用户可以创建多个参数,并且参数同样是一个Query,能够被DAX引用。

二,创建参数

本文创建Suggested Values为Query类型的参数来演示,首先需要有一个List Query,创建List Query的详细过程,请参考《PowerBI开发 第三篇:报表设计技巧》。创建ListQuery的步骤是:打开查询编辑器(Query Editor),选中已经存在的Query的某一列,右击弹出快捷菜单,点击“Add as New Query”,这样创建的Query就是List类型的Query。新建的List Query的Name是选中的字段名,该ListQuery只有一列,初始的列名是List。ListQuery是特殊类型的Query,同样位于左侧的“Queries”列表中,默认是被加载到Data Model中,其属性“Enable Load”默认是勾选的,ListQuery的图标不同于常规的查询,例如,名字为Area的ListQuery的图标是:

例如,创建ListQuery类型的参数,输入参数的Name,参数的数据类型,选择参数的类型(Suggested Values)为Query(即参数类型是ListQuery),选择参数引用的ListQuery(下图中参数的值从Area中获取),勾选必需(Required)属性表示:用户必须指定参数的当前值(Current Value),新建的参数如下图所示:

创建参数之后,在左侧的“Queries”列表中出现一个查询(Query),查询的Name是参数的Name。参数和常规的查询一样,能够被其他查询引用,能够被加载到数据模型(Data Model),也能够被其他DAX表达式引用。默认情况下,查询参数是不会被加载到Data Model中,用户必需手动启用数据加载选项:选中参数,右击弹出快捷菜单,点击“Enable Load”,使PowerBI把参数加载到Data Model中。

例如,创建Text类型的Parameter1,当前值是host1,勾选“Enable Load”,启用参数的加载属性:

三,引用参数

参数的值可能有很多,而引用的是参数的当前值(Current Value),用户可以在查询编辑器(Query Editor)中手动修改参数的当前值,参数通常用于“Get Data” 和 “Query Editor”,也可用于DAX表达式中。

PowerBI通常把参数用于:

  • 参数化数据源(Data Sources)
  • 替换值(Replace Value)
  • 过滤数据行(Filter Rows)
  • 用于DAX表达式中

1,在创建数据查询时,引用参数

通过“Get Data”新建SQL Server类型的数据查询时,可以通过参数设置数据源的Server,Database等属性,如图:

如果PowerBI报表中引用多个查询,而查询使用的底层数据源是相同的,在这样的场景下,用户可以创建参数,参数值是用于连接数据源的连接字符串(Connection String),例如,SQL Server实例,SQL Server Database的名称等,在新建查询时,只需要选中参数,便于统一管理数据源的连接字符串等属性。

2,使用参数替换查询的值

在查询编辑器(Query Editor)中,通过“Replace Values”菜单,图标是:,用户使用参数,查找已经存在的值,替换为其他参数的值。

3,使用参数过滤查询的值

在查询编辑器(Query Editor)中,选中Text类型的Column,点击向下的三角“”,弹出快捷菜单,选择“Text Filters”:

弹出“Filter Rows”的窗体,引用参数查询字段值,并把查找的值替换为其他值,而替换的值也可以通过参数来配置:

4,DAX表达式引用查询参数

参数和常规的查询是一样的,是关系数据(tabular data),能够用于DAX表达式的表表达式(Table Expression)中。

measure_name = "max parameter="& MAX(Parameter1[Parameter1])

四,编辑查询参数

在开发PowerBI报表时,参数的值只能手动来设置,不能动态改变。使用参数,可以统一管理连接字符串(Connection String)。当然,用户可以通过手动变更参数的当前值,然后刷新数据。

用户可以通过“Edit Queries”来查看和编辑参数的当前值:

参考文档:

Using Parameters in Power BI

Deep Dive into Query Parameters and Power BI Templates

POWER BI DESKTOP QUERY PARAMETERS, PART 1

Power BI Introduction: Working with Parameters in Power BI Desktop — Part 4

SSIS 数据源组件的External Metadata和Advanced Property的更多相关文章

  1. SQL Server 2005 Integration Services (SSIS)数据源之MySQL

    一安装MySQL数据库的ODBC驱动 下载MySQL Connector ODBC 3.51.rar 单击setup按默认安装即可! 如下图所示,在ODBC数据源管理器中看到“MySQL ODBC 3 ...

  2. SSIS 查找 组件

    通过SSIS的“查找”组件进行不同数据源之间数据的合并操作 为了协助开发还原生产环境中的某些bug,需要将将生产环境的某些特定表数据导入到测试环境做测试,之前一直都是暴力地truncate测试环境的表 ...

  3. SSIS Destination 组件使用Fast-Load mode出错

    查看一个Package的历史Message 数据,发现 DataFlow Task 经常出错,错误信息的Description是: Description: "While reading c ...

  4. 阿里巴巴Druid数据源组件

    目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们Spring 推荐使用dbcp:Hibernate 推荐使用c3p0和proxool1. DBCP:apacheDBC ...

  5. SSIS: Lookup组件高级用法,生成推断成员(inferred member)

    将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比 ...

  6. MySQL之当数据库数据源被锁(Table Metadata Lock)时的解决方案

    0.发生的原因分析:[hibernate的线程池连接导致了不能修改被锁定数据库的数据库型模式] 1.关掉hibernate的所有线程池(选择退出IDE或者其他办法) 2.查看被锁的进程ID:show ...

  7. 基于注解的springboot+mybatis的多数据源组件的实现

    通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需 ...

  8. [转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换

    本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html 一 派生列 派生列转换通过对输入列进行类型转换或应用表 ...

  9. SSIS 剖析数据流之:连接和查找转换

    在SSIS的数据流组件中,SSIS引擎使用Merge Join组件和 Lookup组件实现TSQL语句中的inner join 和 outer join 功能,Lookup查找组件的功能更类似TSQL ...

随机推荐

  1. [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)

    对于深度优先算法,第一个直观的想法是只要是要求输出最短情况的详细步骤的题目基本上都要使用深度优先来解决.比较常见的题目类型比如寻路等,可以结合相关的经典算法进行分析. 常用步骤: 第一道题目:Dung ...

  2. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  3. AMD&CommonJS

    最近在学习nodejs的KOA框架,在查资料的时候遇见了点问题,顺着信息一步一步找下去,让我了解了一下一直以来不是很明白的什么时候用AMD规范,什么时候用CommonJS规范问题. CommonJS一 ...

  4. bootstrap之google fonts

    bootstrap之google fonts 在学习一个bootstrap时,看到了一行引用代码:@import url(http://fonts.googleapis.com/css?family= ...

  5. Hibernate criteria 增加排序项

  6. [译]Modern Core Graphics with Swift系列

    第一篇 想象一下你已经完成了你的app并且运行的很好,但是界面看上去太土,你可以在PS里面画好多不同尺寸的自定义控件,Apple并没有4x的retina屏幕. 或者你已经未雨绸缪,在代码中使用Core ...

  7. 设计模式(十三) 职责链(chain of responsibility)

    软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累.最 ...

  8. 【hihoCoder】1036 Trie图

    题目:http://hihocoder.com/problemset/problem/1036 给一个词典dict,词典中包含了一些单词words.要求判断给定的一个文本串text中是否包含这个字典中 ...

  9. java面向对象_static关键字

    1. 修饰成员变量:有static修饰的为静态变量,没有static修饰的称为实例变量. 实例变量:属于对象的,一个对象有一份.在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响.存储 ...

  10. DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考

    之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题.后来找到了自己认为比较合理的解决方案,分享给大家.也希望能和大家交流,擦出更多的火花. 论坛核心领域 ...