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 ...
随机推荐
- 【日常踩坑】修复 chrome 打不开微信或者部分第三方应用内链接
目录 默认浏览器为 chrome 时,打不开微信或者部分第三方应用内链接(或者没有反应) 修复问题:卸载 KGChromePlugin 参考资料 默认浏览器为 chrome 时,打不开微信或者部分第三 ...
- AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通
本文收集于教程合集:AIGC从入门到精通教程汇总 我是小梦,以浅显易懂的方式,与大家分享那些实实在在可行之宝藏. 历经耗时数十个小时,总算将这份Stable Diffusion的使用教程整理妥当. 从 ...
- Linux 内核音频数据传递主要流程 (下)
来而不往非礼也.前面看到了用户空间应用程序和 DMA buffer 之间交换数据,并更新 runtime->control->appl_ptr 指针的过程,这里看一下硬件设备驱动程序在完成 ...
- VulnStack - ATT&CK红队评估实战(四) Writeup
VulnStack - ATT&CK红队评估实战(四) Writeup VulnStack(四)环境搭建 1.项目地址 http://vulnstack.qiyuanxuetang.net/v ...
- MySQL-通过存储过程来添加和删除分区(List分区)
1.背景原因 当前MySQL不支持在添加和删除分区时,使用IF NOT EXISTS和IF EXISTS.所以在执行调度任务时,直接通过ADD PARTITION和DROP PARTITION不可避免 ...
- Nearest cluster-based intrusion detection through convolutional neural networks 笔记
Nearest cluster-based intrusion detection through convolutional neural networks 技术要点 So, the primary ...
- math 库中常用的数学运算和常量【GO 基础】
〇.关于 math GO 语言的 math 库是一个内置的标准库,其中包含了许多数学函数和常量,用于计算各种数学运算和统计学计算. 日常开发中,计算当然是少不了的,那么今天来梳理下备查. 一.测试示例 ...
- 【Redis】SpringBoot集成Redis事务-亲测
大家好,我是mep.今天一起来探讨一下Redis缓存的问题,SpringBoot如何集成Redis网上文章很多,基本都是介绍如何配置redisTemplate,如何调用,本文就不过多介绍了.这次我们研 ...
- HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
本文转载自支付宝体验科技,作者是蚂蚁集团客户端工程师博欢,介绍了支付宝如何基于 HarmonyOS 4.0 实况窗实现医疗场景履约智能提醒. 1.话题背景 8 月 4 日,华为在 HDC(华为 202 ...
- 解锁Java面试中的锁:深入了解不同类型的锁和它们的用途
简介 多线程编程在现代软件开发中扮演着至关重要的角色.它使我们能够有效地利用多核处理器和提高应用程序的性能.然而,多线程编程也伴随着一系列挑战,其中最重要的之一就是处理共享资源的线程安全性.在这个领域 ...