SQLBI_精通DAX课程笔记_02_数据类型
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_数据类型的更多相关文章
- C#学习笔记_02_数据类型
02_数据类型 基本数据类型 整型 有符号整型:最高位是正负号 字节型:sbyte 1byte:[-128,127] 短整型:short: 2byte:[-2^(位数-1),2^(位数-1)-1] 整 ...
- vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结
vue—你必须知道的 目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...
- CS231n课程笔记翻译1:Python Numpy教程
译者注:本文智能单元首发,翻译自斯坦福CS231n课程笔记Python Numpy Tutorial,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客翻译完成,Flood Sung ...
- Spring框架 课程笔记
Spring框架 课程笔记 第1章 Spring概述 1.1 Spring概述 1) Spring是一个开源框架 2) Spring为简化企业级开发而生,使用Spring ...
- Linux内核分析课程笔记(一)
linux内核分析课程笔记(一) 冯诺依曼体系结构 冯诺依曼体系结构实际上就是存储程序计算机. 从两个层面来讲: 从硬件的角度来看,冯诺依曼体系结构逻辑上可以抽象成CPU和内存,通过总线相连.CPU上 ...
- (1/18)重学Standford_iOS7开发_iOS概述_课程笔记
写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识.带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现, ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
- Andrew Ng机器学习课程笔记--汇总
笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...
- Andrew 机器学习课程笔记
Andrew 机器学习课程笔记 完成 Andrew 的课程结束至今已有一段时间,课程介绍深入浅出,很好的解释了模型的基本原理以及应用.在我看来这是个很好的入门视频,他老人家现在又出了一门 deep l ...
随机推荐
- nginx-http反向代理与负载均衡
前言 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源.同时,用户不需要知道目标服务器的地址,也无须在 ...
- Jmeter关联之正则表达式提取器
正则表达式简介 摘自网上的说法,正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种 逻辑公式,就是用事先定义好的一些特定字符 ...
- 《SQL与数据库基础》23. 读写分离
目录 读写分离 一主一从 准备 配置 双主双从 准备 配置 主库配置 从库配置 从库关联主库 主库相互复制 双主双从读写分离 本文以 MySQL 为例.以 MyCat 数据库中间件为例,通过 MyCa ...
- O2OA(翱途)开发平台 V8.1正式发布
尊敬的O2OA(翱途)平台合作伙伴.用户以及亲爱的开发小伙伴们,平台 V8.1版本已正式发布.正值8月的最后一周,我们以更安全.更高效.更好用的崭新面貌迎接9月的到来. O2OA开发平台v8.1版本更 ...
- 在线问诊 Python、FastAPI、Neo4j — 创建症状节点
目录 症状数据 创建节点 附学习 电子病历中,患者主诉对应的相关检查,得出的诊断以及最后的用药情况.症状一般可以从主诉中提取. 症状数据 symptom_data.csv CSV 中,没有直接一行一个 ...
- Record - Nov. 28st, 2020 - Exam. REC
Prob. 1 Desc. & Link. 暴力为 \(\Theta(NK)\). 正解(也许): 把每一个全为正整数的子段找出来. 然后判断一下中间连接的情况即可. 但是这样决策情况太多了. ...
- ingress获取客户端真实IP
环境: k8s1.25.2.helm部署的ingress 1.进入ingress helm目录,修改values.yaml文件 2.卸载重装 helm uninstall ingress-test - ...
- 兴达易控Modbus转Profinet网关连接三菱A800变频器配置案例
兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器 下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编 ...
- MySQL 的 InnoDB 存储引擎简介
MySQL 是世界上最流行的开源关系型数据库管理系统之一,而其中的存储引擎则是其关键组成部分之一.InnoDB 存储引擎在 MySQL 中扮演了重要角色,提供了许多高级功能和性能优化,适用于各种应用程 ...
- Python+SVM
# !/usr/bin/env python # encoding: utf-8 # SVM算法 支持向量机 from sklearn import svm import numpy as np fr ...