R是一种专门用于数据分析和统计的脚本语言,广泛应用在每一个需要统计和数据分析的领域。PowerBI支持R脚本,两者强强结合,使PowerBI的功能更加强大。PowerBI Desktop默认没有安装R,在使用R脚本之前,必须向PowerBI Desktop中安装R引擎。用户可以使用R脚本加载数据、对数据进行转换和处理、使用R脚本图形化显示数据,这意味着,PowerBI对R的支持是深度融合的,在数据处理的各个阶段都能使用R。而且,为了便于开发人员使用R进行编程,PowerBI可以直接调用R外部IDE,编程体验更好。

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

一,安装R引擎

在使用R之前,用户必须向本地主机中安装R引擎。安装的过程非常简单,用户只需要点击File菜单,选择“Options and settings”,打开“Options”窗口,切换到“R scripting”选项卡,根据提示的帮助,安装R引擎和R外部IDE。

R引擎安装的根目录由“Detected R home directories”指定,用于R编程的外部IDE由“Detected R IDEs”指定,如下图,R外部的IDE是R Studio,R根目录是:C:\Program Files\R\R-3.4.3

如果本地主机已经安装了R引擎和R IDE,PowerBI会自动探测到,用户只需要从下来列表中选择相应的列表项。

二,使用R脚本加载数据

数据是数据分析的原材料,R脚本是PowerBI加载数据的一种方法,工作流程是:PowerBI执行R脚本,按照R代码逻辑对数据源进行加工和处理,把最终的数据加载到PowerBI中,创建一个查询(Query),用于代表该数据集。

和其他加载方式一样,用户需要通过“Get Data”菜单来加载数据,从Other分类中,选择R Script,输入R脚本,保存之后,PowerBI自动执行脚本,处理并加载数据。R脚本数据源的图标如下:

点击该图标,打开一个R Script的窗体,例如,输入R脚本,该脚本末尾包含一个数据框,作为最终的输出:

三,使用R 转换数据(Transfrom)

在查询编辑器(Query Editor)中,切换到转换(Transform)菜单,用户可以使用“Run R Script”菜单对数据进行转换加工,以生成新的Query,R数据转换的图标如下图:

用户编写R脚本对现有的数据进行转换操作,如下图,PowerBI自动创建一个dataset变量,该变量是数据框类型,作为转换的输入数据;R脚本转换对dataset进行数据处理,最终生成适合业务逻辑的输出数据,输出数据的变量名是output,类型是数据框。使用R脚本对数据进行转换操作。

注意:如果Query中包含Date类型的字段,请首先把Date转换为字符(text)类型,执行完R脚本之后,再把该字段转换为Date类型。这是PowerBI的一个bug,后续可能会被修复。

示例脚本如下图:

四,使用R显示数据

在Visualization列表中,选择 R Script Visual,图标如下:

用户启用R脚本之后,向R脚本编辑器中输入字段,例如,向R脚本编辑器中插入两个字段x1和x2,该字段作为R visual的输入字段。

PowerBI 自动创建数据框dataset,移除重复的数据行。用户编写自定义的代码,对输入数据dataset进行处理和重塑,最后编写绘图代码显示数据,例如:

一般来说,R脚本包含两部分:

  • 用于处理数据的代码;
  • 用于绘图的代码;

参考文档:

How to Import Data from R Scripts into Power BI

Using R in Query Editor

Create Power BI visuals using R

TSQL 去除重复值的更多相关文章

  1. JAVA中List对象去除重复值的方法

    JAVA中List对象去除重复值,大致分为两种情况,一种是List<String>.List<Integer>这类,直接根据List中的值进行去重,另一种是List<Us ...

  2. 二维数组去除重复值和array_unique函数

    今天遇到了一个问题,就是从数据库中去除的数组为一个二维数组,现在就是想将二位数组进行去重,但是在php中,对于一个一维数组,我们可以直接使用php的系统函数array_unique,但是这个函数不能对 ...

  3. php二维数组去除重复值

    <?php //二维数组 $test["aa"] = array("id"=>"17","name"=> ...

  4. js数组中如何去除重复值?

    在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来 去除数组重复值方法: 1,利用indexOf()方法去除 思路:创建一个新数组,然后循环要去重的 ...

  5. C#根据对象的指定字段去除重复值

    PersonInfo类: public class PersonInfo { public int Index; public string Name; public override string ...

  6. java list 去除 重复值

    一: Hastset根据hashcode判断是否重复,数据不会重复 Java代码 /** List order not maintained **/ public static void remove ...

  7. (转)JAVA HashSet 去除重复值原理

    Java中的set是一个不包含重复元素的集合,确切地说,是不包含e1.equals(e2)的元素对.Set中允许添加null.Set不能保证集合里元素的顺序. 在往set中添加元素时,如果指定元素不存 ...

  8. SQL SERVER 实现相同记录为空显示(多列去除重复值,相同的只显示一条数据)

    sql server语句查询中碰到结果集有重复数据,需要把这个重复数据汇总成一条显示.其余则正常显示. 使用SQL内置函数 ROW_NUMBER() 加 PARTITION 完成 ROW_NUMBER ...

  9. 给json对象去除重复的值

    给数组去除重复值 Array.prototype.distinct = function() { var arr = this, result = [], i, j, len = arr.length ...

随机推荐

  1. Java数组与vector互转

    Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...

  2. 命令行中mysql乱码问题

    1.现象  在命令行中,执行sql语句如果包含中问题,提示“ Data too long for column '列名' at row 1”   或者在命令行中查询出的结果中,中文乱码   2.分析 ...

  3. wince mobile环境下播放WAV声音

     [DllImport("coredll", EntryPoint = "PlaySound")]         public static extern i ...

  4. 在Ubuntu下配置舒服的Python开发环境

    Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的一个安装和配置步骤,基于 Ubuntu 12.0 ...

  5. Hbase随笔

    大数据时代的数据量是超大规模的,传统的关系数据库已经很难存储和管理这些数据了,为了存储海量数据,我们有了HDFS,它可以把成千上万台服务器上的硬盘聚集成一块超级大的硬盘,为了让这些数据产生价值,我们有 ...

  6. Linux之DNS

    DNS服务器配置 一.DNS概述:DNS 是域名系统 (Domain Name System) 的缩写,是一种组织域层次结构的计算机和网络服务命名系统.它的作用是:把域名转换成为网络可以识别的 IP ...

  7. java中对List<Map<String,Object>>中的中文汉字排序

    import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

  8. sphinx教程

    http://www.php100.com/html/it/focus/2013/0916/6188.html### 以上一篇的email数据表为例: 数据结构: 01.CREATE TABLE em ...

  9. 使用SQL生成DateTime.Ticks

    在项目中我需要使用到一个随机数(Random Number),该随机数将作为 Hashtable 中的 Key 用于唯一索引数据,所以需要保持单机唯一性. 同时该随机数还需要具备可排序性以便对数据进行 ...

  10. 一种另类的解决URL中文乱码问题--对中文进行加密、解密处理

    情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标对工作目标进行两次编码(encodeURI(enco ...