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 ...
随机推荐
- 【go笔记】使用标准库flag解析命令行参数
前言 Go语言标准库中提供了一个包flag可以解析命令行参数. 示例代码:文件读取 package main import ( "fmt" "flag" &qu ...
- filter() 函数的学习
1. filter() 函数 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换.该接收两个参数, 第一个为函数,第二个为序列,序列的每个 ...
- N1nEmAn-2023集训wp
week1 2022-12-28 WP 0x00 T1 reverse3 前几天没注意到要发wp,现在补一下.最近在学汇编,pwn题没做新的了.想到之前了解到hws的pwn会考花指令,听hjx他们说那 ...
- AI绘画StableDiffusion实操教程:可爱头像奶茶小女孩(附高清图片)
本教程收集于:AIGC从入门到精通教程汇总 今天继续分享AI绘画实操教程,如何用lora包生成超可爱头像奶茶小女孩 放大高清图已放到教程包内,需要的可以自取. 欢迎来到我们这篇特别的文章--<A ...
- Vue【原创】整合el-dialog,可拖动可全屏最大化弹出框
项目中很多时候需要弹出框可以拖动并且可最大化,el-dialog是不满足的,这边采用指令的方式进行拓展. 先来个效果图: 首先来个v-darg指令: 1 import Vue from 'vue' 2 ...
- 《Python魔法大冒险》004 第一个魔法程序
在图书馆的一个安静的角落,魔法师和小鱼坐在一张巨大的桌子前.桌子上摆放着那台神秘的笔记本电脑. 魔法师: 小鱼,你已经学会了如何安装魔法解释器和代码编辑器.是时候开始编写你的第一个Python魔法程序 ...
- 精选版:用Java扩展Nginx(nginx-clojure 入门)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 今天咱们以Java程序员的视角,来聊聊如何用 ...
- 6-MySQL查询条件
在MySQL中,高级查询是指使用更复杂的查询语句和操作符来检索和操作数据库中的数据.高级查询可以帮助您更精确地找到所需的信息,并提高查询的效率和灵活性. 以下是高级查询的一些常见应用场景和意义: 连接 ...
- Ionic 整合 pixi.js
最近做了个app,上线google play不大顺利,说是有假冒行为,然后改了下icon和名字以及描述,但是没啥信息去上,于是暂时放下搞点别的. 因为近期看到个比较有趣的绘图创意, 于是想通过ioni ...
- 🖖少年,该升级 Vue3 了!
你好,我是 Kagol. 前言 根据 Vue 官网文档的说明,Vue2 的终止支持时间是 2023 年 12 月 31 日,这意味着从明年开始: Vue2 将不再更新和升级新版本,不再增加新特性,不再 ...