在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

PowerBI开发 第八篇:查询参数的更多相关文章

  1. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

  2. PowerBI开发 第四篇:DAX表达式

    DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...

  3. PowerBI开发 第十三篇:增量刷新

    PowerBI 将要解锁增量刷新(Incremental refresh)功能,这是一个令人期待的更新,使得PowerBI可以加载大数据集,并能减少数据的刷新时间和资源消耗,该功能目前处于预览状态,只 ...

  4. PowerBI开发 第四篇:DAX 表达式基础

    DAX 表达式主要用于创建度量列(Measure),度量值是根据用户选择的Filter和公式,计算聚合值,DAX表达式基本上都是引用对应的函数,函数的执行有表级(Table-Level)上下文和行级( ...

  5. PowerBI开发 第七篇:数据集和数据刷新

    PowerBI报表是基于数据分析的引擎,数据真正的来源(Data Source)是数据库,文件等数据存储媒介,PowerBI支持的数据源类型多种多样.PowerBI Service(云端)有时不直接访 ...

  6. PowerBI开发 第五篇:关系和交互

    PowerBI 使用 内存的列式数据库 VertiPaq,用于对已发布的数据集进行数据压缩和快速处理,能够使PowerBI报表执行脱机访问,面向列的处理,高度优化对1:N关系的处理性能.关系是数据分析 ...

  7. PowerBI开发 第三篇:报表设计技巧

    最近做了几个PowerBI报表,对PowerBI的设计有了更深的理解,对数据的塑形(sharp data),不仅可以在Data Source中实现,例如在TSQL查询脚本中,而且可以在PowerBI中 ...

  8. PowerBI开发 第十一篇:报表设计技巧(更新)

    PowerBI版本在持续的更新,这使得报表设计能够实现更多新的功能,您可以访问 PowerBI Blog查看PowerBI的最新更新信息,本文总结了PowerBI新版本的重要更新和设计技巧. 我的Po ...

  9. Swift开发第十篇——可变参数函数&初始化方法顺序

    本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...

随机推荐

  1. 重学C语言---02C语言概述

    1.第一个C语言实例 #include<stdio.h> int main(void) /*一个简单的C程序*/ { int num; /*定义一个num的变量*/ num = ; /*为 ...

  2. Java计算大整数

    import java.util.*; import java.math.*; //BigInteger类型在这个包里 public class Gcc_test { public static vo ...

  3. replace 用法

    orcl中replace()用法: replace:(字符串 | 列):进行替换: 将bqh1表中name列带“小”的字改成“大”: select * from bqh1select a.*,repl ...

  4. kettle性能优化

    普通开发电脑,如果没有网络查询步骤,kettle正常的速度应该在3000~20000条/秒.如果速度在2000条/秒一下,就可能需要调优. 性能优化的方式包括如下几种: 1.通过改变开始复制的数量(针 ...

  5. 开源作业调度框架 - Quartz.NET - Cron表达式测试

    昨天简单写了一下如何使用Quzrtz.NET. 那么问题来了,我设置了Cron表达式之后如何知道是表达式是否按照预期的时间执行了呢? 我找到了些Cron表达式工具生成了表达式,确发现它们基本上没有进行 ...

  6. Python接口自动化--requests 1

    # _*_ encoding:utf-8 _*_ import requests #请求博客园首页,无参数的get请求 r = requests.get('http://www.cnblogs.com ...

  7. input file 美化

    <input type='file'>的默认外观实在难看,绝大多数情况都需要对其美化.找了很多资料,目前发现以下方式是最简单的美化方式. 1.将file input用label包裹起来,然 ...

  8. unity3D iTween的使用

     iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它能够轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看 http://itwe ...

  9. BZOJ3173:[TJOI2013]最长上升子序列(Splay)

    Description 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上升子序列长度是多少? Input 第一行一 ...

  10. <数据结构与算法分析>读书笔记--利用Java5泛型实现泛型构件

    一.简单的泛型类和接口 当指定一个泛型类时,类的声明则包括一个或多个类型参数,这些参数被放入在类名后面的一对尖括号内. 示例一: package cn.generic.example; public ...