SQLBI_精通DAX课程笔记_02_数据类型

PowerBi 和 Analysis Services 在数据加载环节,无论数据源是什么类型,都会自动将数据转化为DAX可用的数据类型集。

以下链接为微软官方文档,也可以参考浏览:

https://learn.microsoft.com/zh-cn/power-bi/connect-data/desktop-data-types

一:数据类型

1.1 数字类型

数字类型包含了,Integer(64 bit) 即整数型,,Decimal 十进制 (floating point) 即浮点型,日期时间型、货币型(以整数形式储存,整数的最后四位用作小数位数)、布尔型等等

1.2:其他类型

String (字符串型),“文本”数据类型是 Unicode 字符数据字符串,可以是字母、数字或以文本格式表示的日期。 根据 Power BI 的 Power Query 基础引擎及其对“文本”数据类型长度的限制,字符串长度的实际最大限制约为 32,000 个 Unicode 字符。 “文本”数据类型超出实际最大限制可能会导致错误。(偶尔在pq中会遇到超出资源等报错提示,就有可能是这个原因)

Binary Objects (二进制类型)等等

这里附一个对照表:

二:数据类型和格式有区别

数据类型和格式完全不是一回事。

格式(图中1号标记):控制一个数字的显示方式,而不以任何方式影响基础精度

数据类型(图中2号标记):控制数据的类型,将更改数值的精度,使之与所声明的数据类型一致。注意,更改数据类型会永久改变信息在表中的储存方式,可能会导致数据丢失。

视频案例中,以"8.99"元的单价列做了例子

2.1  修改列格式

当单价列,只修改格式,由货币调整为整数型时,显示的值变为了"9"

当我们手工调回2位显示时,仍旧显示为"8.99",这意味着,我们只刚刚修改的格式,并没有从根本上修改我们数字的储存方式,也就是所谓的保持了精度。

2.2  修改列数据类型

当单价列,我们修改数据类型为整数型时,首先我们收到了警告,如下图

点击确定后,显示的值同样变为了"9",但是我们试图手工调整数据格式为小数型时,我们发现值已经永久的被修改为了"9",除非我们重新加载原来的旧的的数据集,否则这个值就是被永久改变了。经过这个实验案例,我们明白了,上面的核心观点,修改数据类型,会直接永久性的更改数据精度。

三:运算符重载

运算符可以应用于不同的操作数(operand),DAX引擎会自动转化运算符的参数,已满足运算符的需要,最终结果的数据类型有运算符去定义。

如下图所示,我们创建两个度量值,将他们放入矩阵视觉对象,分别测试1和2的结果值,他们的区别在于分别有"+"和"&"去链接,我们可以看到结果,当用"+"好去连接时,返回了7(数字类型),即运算符重载返回了加法结果,而"&"号链接时,返回的结果是34(文本类型),所以返回的结果数的类型是由运算符去定义的。

正因为有运算符重载功能,所以我们最好是在书写代码时,或者是设置默认值时,就应该明确规定数据类型,以免因为数据重载导致的计算结果不一致的问题。(控制权得在咱们自己手里,不许引擎自己瞎算)

四:日期时间类型

日期时间型以浮点数储存,分为整数部分和小数部分。

4.1 整数部分

整数部分表示,1899年12月30日之后的天数,即在DAX中,整数"1"就代表了1899年12月30日当日。所以日期直接减去一个整数1,就代表日期减1,前一天。

4.2 小数部分

小数部分表示的是天的分数,在DAX中用1除以24来表示一个小时的(我算了一下,相当于1小时就是0.416......),0.25(0.416*6 约等于0.249)就代表是早上的6点。

4.3 简单案例(计算送货天数)

综合上诉两点,视频中,举了一个简单的例子。

假设我们有两个日期列,一个是发货日期,一个是收货日期。当我们需要送货天数时,我们直接新建了计算列(送货天数=收货日期-发货日期),毕竟日期就是数字,所以可以直接进行运算,得到的结果是XXXX年X月X天,并不是直接显示间隔天数,只需修改这个计算列的数据格式为整数,送货天数就以整数天数的形式展示了。

SQLBI_精通DAX课程笔记_02_数据类型的更多相关文章

  1. C#学习笔记_02_数据类型

    02_数据类型 基本数据类型 整型 有符号整型:最高位是正负号 字节型:sbyte 1byte:[-128,127] 短整型:short: 2byte:[-2^(位数-1),2^(位数-1)-1] 整 ...

  2. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  3. CS231n课程笔记翻译1:Python Numpy教程

    译者注:本文智能单元首发,翻译自斯坦福CS231n课程笔记Python Numpy Tutorial,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客翻译完成,Flood Sung ...

  4. Spring框架 课程笔记

    Spring框架 课程笔记 第1章  Spring概述 1.1 Spring概述 1)        Spring是一个开源框架 2)        Spring为简化企业级开发而生,使用Spring ...

  5. Linux内核分析课程笔记(一)

    linux内核分析课程笔记(一) 冯诺依曼体系结构 冯诺依曼体系结构实际上就是存储程序计算机. 从两个层面来讲: 从硬件的角度来看,冯诺依曼体系结构逻辑上可以抽象成CPU和内存,通过总线相连.CPU上 ...

  6. (1/18)重学Standford_iOS7开发_iOS概述_课程笔记

    写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识.带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现, ...

  7. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  8. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  9. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  10. Andrew 机器学习课程笔记

    Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...

随机推荐

  1. __wakeup()魔术方法绕过(CVE-2016-7124)

    __wakeup()魔术方法绕过(CVE-2016-7124) 漏洞简介 在php反序列化数据过程中,如果类中存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方 ...

  2. 【路由器】OpenWrt 配置使用

    目录 Web 界面 汉化 root 密码 ssh 升级 LuCI 美化 锐捷认证 MentoHUST MiniEAP 防火墙 开放端口 端口转发 IPv6 USB 安装 USB 驱动 自动挂载 Ext ...

  3. Java开发面试--nacos专区

    1. Nacos是什么? 请简要介绍Nacos是什么以及它的主要功能和用途. 答: 简介: Nacos是一个开源的.高性能.动态服务发现.配置和服务管理平台,通常用于微服务架构中.Nacos的名称来源 ...

  4. IOS 16 无法打开开发版或者企业版本APP解决方案 - 需要开启开发者模式

    在IOS 16系统上,打开开发版本APP,或者企业版本APP时,会看到如下的提示信息: 需要开启开发者模式, xxx 需要在开发者模式下运行. 启用开发者模式前, 此App不可用 这个时由于IOS 1 ...

  5. Python中的转义符\

    1.转义符 可以百度百科查询 2.Python中的转义符 我目前知道的Python中的转义符使用场景有两个:一个是字符串,一个是正则表达式 2.1.字符串的转义 2.1.1.反斜杠"\&qu ...

  6. linux常用命令(八) tar 打包、压缩、解包、解压缩

    Linux 常用的压缩与解压缩命令有:tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar 等. 首先要弄清 ...

  7. Java编程之道:巧妙解决Excel公式迭代计算难题

    本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 什么是迭代计算 迭代计算其实是在 Excel 中,一种公式的循环引用,对于了 ...

  8. 低代码平台探讨-MetaStore元数据缓存

    背景及需求 之前提到我们模型驱动的实现选择的是解释型,需要模型的元数据信息,在接到请求后动态处理逻辑. 此外,应用的通用能力中还包括:页面dsl查询,菜单查询等. 而且后期加入触发器,用户自定义api ...

  9. Java替换RequestBody和RequestParam参数的属性

    Java替换RequstBody和RequestParam参数的属性 本文主要讲解在Java环境中如何替换RequestBody和RequestParam参数中的属性 背景 近期由于接手的老项目中存在 ...

  10. powershell 7 初体验

    支持枚举定义,类定义\类继承\接口继承,不支持接口定义\泛型类定义\泛型函数定义,但是作为shell脚本已经相当让人惊喜了, 基本逻辑可以直接套用C#语法格式 # enum_sample/main.p ...