本期包括 Dataverse 所有列的类型介绍,所以内容较多,大概阅读时间 15分钟。
本期重点总结:
常用的数据类型有文本、整数、日期、自动编号、单选和多选
计算列可以根据公式自动填充数据,比如根据用户填写的省市区街道内容,自动合并得到完整地址。
汇总列可以定期对相关表的数据进行筛选和汇总运算,比如在班级表中定期汇总出属于当前班级的男生人数,或者自动汇总出每名客户的商机总数等等。
我们在讲表结构的时候提到过,Dataverse 中的表是由列和行组成。实际上为了更好的存储和使用数据, Dataverse 中我们可以将列设置为不同的数据类型,从而更好的满足不同场景的使用需求。
本期我们将会了解 Dataverse 中所有列的类型,从而帮助大家选择合适数据类型用来保存数据。
列的数据类型就是这一列所能放的数据的类型。在 Dataverse 中提供了多种数据类型,这些数据类型分别适合存储不同的内容。数据类型的主要目的是在应用到 Dataverse 数据的应用上(比如模型驱动应用和门户),能够给用户提供更加友好的交互界面,接下来就让我们看一下全部的数据类型有哪些。
文本
文本类型最好理解,也最常用,可以用来存储 4000 个以内的文字,而在文本类型下 Dataverse 提供了几个不同的分类,用于存储不同的文本内容。
文本(单行文本)
像我们之前在学生表中的姓名列,它的数据类型就是单行文本。当我们希望输入的文字内容在一行左右的时候,就可以使用单行文本类型储存数据。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482103-491201-7034b53ef6a37c0fe0b5c2ee754c42af.png)
文本区域
表现形式是一个多行文本框,当大家需要储存超过一行的文字内容,并且整体字数少于4000字的时候,可以使用文本区域作为列的数据类型。比如下图中的学生简介,当我们将列设置为文本区域后,模型驱动应用在展现学生简介列时,会自动把它以多行文本进行呈现,方便用户进行内容填写。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482148-775024-01a2f1af4b2acc902fe419b613ff9509.png)
电子邮件
顾名思义是用来填写电子邮件的,当我们想要存储用户邮件时,可以使用电子邮件类型进行存储。当我们将列的数据类型设置为电子邮件后,会起到两个作用,首先应用会自动帮助我们做邮箱格式的验证,其次还提供了一个 mailto 的功能,可以让用户在点击时自动打开系统的邮箱,并自动填写收件人。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482180-486864-8c7cf133e13d6e0091e2433f01663548.png)
URL
URL 可以用来存储网址,比如客户的网站,微信文章的链接,都可以用 URL 数据类型进行存储。Dataverse 会自动帮助我们验证 URL 的格式,并且支持用户点击该 URL 自动打开系统的浏览器跳转到该网址。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482189-907450-6f09dd87230704f26637dd8423636b36.png)
股票代号
用于存储客户企业的股票代码,可以通过点击直接跳转到 MSN 查看该股票的情况,但不适用于国内上市的公司。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482237-262205-7a82ac4de9974cc9eb0a9e98f8f22f47.png)
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482249-692676-af0e0ab45044909deb70efeb3e3513ce.png)
手机
用来存储手机号,支持点击跳转到 Skype 向该手机号发起网络通话,并自动打开活动记录页面,记录一次和该用户的电话活动。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482273-525198-e8149ac58704e47a500f6cb2f77ad548.png)
自动编号
自动编号是个比较特殊的文本列,它可以在这条记录被创建时自动根据设置好的规则生成一个文字+数字的内容。常用于给内容编号时使用,比如之前学生表中的学号我设置的规则就是从0001开始每创建一个学生记录,学号就会自动+1,而不需要用户手动填写。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482280-632590-76a49c42997674d6359dcad5765a1c61.png)
种子值
种子值指的是自动编号的起始数字部分,比如我们希望生成的学号是 0001、0002、0003这样,那它的种子值就是1,而如果我们希望学号是1000、1001、1002,那就需要将种子值设置为 1000。说白了就是数字的起始值。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482288-802856-e23cae079d4ea5254e8e5a85d107d528.png)
上面这个是最基础的自动编号,另外为方便用户使用,Dataverse 提供了一些默认的自动编号类型,从而覆盖更多的使用场景。
字符串前缀编号
支持设置一个指定的文字,再加上数字拼接而成的自动编号。比如我想把学号设置成 MS-0001 , MS-0002 。那就可以把编号设置为字符串前缀编号,并将字符串设置为“MS”。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482298-247291-2ec50a4acc88a30d130d6592bd5590bb.png)
日期前缀编号
支持在数字前加上当前日期,提供了几种日期格式用于选择,比如可以用年月日的格式生成自动编号。Dataverse 会自动读取当前记录创建的日期,并加上设置好的数字。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482307-723936-ea6912ff77632e486a06d039f5c8d022.png)
自定义编号
除了上述提供的几种开箱即用的编号类型外, Dataverse 也提供了几种语法来设置自定义编号
{SEQNUM:n} :表示序列号,其中n 表示最小位数。比如我们想通过自定义编号实现 0001这样的自动编号,就需要在格式中这样写:{SEQNUM:4} ,表示生成最小4位数的数字。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482333-778266-11f5e0ea1ec8b3c1b485d49bea12a47a.png)
{RANDSTRING:n} :表示随机文本,其中 n 表示需要生成的字符数,最大可以设置成6 .比如想要生成4个字的随机文本,那就可以这样写 {RANDSTRING:4}
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482348-667671-54f1aad6ae6f79877672ee2283adaa79.png)
{DATETIMEUTC:fff} :表示生成日期时间,其中fff 表示时间格式。比如我想要生成一个不包括日期只有年月的编号,就可以这样写 {DATETIMEUTC:yyyyMM}
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482362-420354-57d8ddae27e8c5b9006830bfdd2b3add.png)
这三个语法直接可以自由搭配,并拼接上固定的文本进行使用。比如我想生成一个 MS 加上日期的自动编号,那我可以这样写。
MS{DATETIMEUTC:yyyyMM}{SEQNUM:4}
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482375-420809-6e855dd772b7fe4899059a2ce3cd2ffd.png)
图中的下拉选项,我们根据自己需要点击一下,Dataverse 就会自动把相关语法填写到格式文本框中,不需要我们死记硬背。
整数
介绍完文本类型后,我们看一下整数的数据类型。
我们知道整数在数学中的定义是正整数,零,负整数的集合,整数还可以被分为奇数和偶数……
也就是说整数后面是没有小数的,比如22就是一个整数,而2.2 就不是一个整数。在整数下, Dataverse 也提供了多种分类用于更加友好的使用和显示整数。整数的最小值和最大值也可以进行配置,但是不能小于 -217483648 ,也不能大于2147483647 。
至于为什么是这两个数字,我建议不要深究(因为在32位或者64位电脑中整数占4个字节,也就是32位。所以32位能够表示的数就是-231 ~ 231-1,即-21474836482147483647)
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482392-807390-014b1b5b4daa1774762decaf4b8d2bdb.png)
整数
直接显示数字,比如可以在学生表中用来表示年龄。设置成整数以后,用户就不可以在上面打其他文字和小数了。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482406-288613-6d0ee27d2bcf3e9e7a6048a2fdf7f542.png)
持续时间
通常用来描述一件事情持续了多久,比如会议持续时间,或者学生的学习时长。当我们将列设置为持续时间后,该内容会在应用中呈现出下拉列表的样式,并可以让用户在分钟、小时和天中进行选择。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482414-185981-7e6c3d3fdfd95bd481de644586d2bb6c.png)
时区
用来记录用户所在时区,会以下拉列表的形式呈现在应用界面。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482424-810735-6bc05b1e823a4b336be8b12b718d23eb.png)
语言
会以下拉列表的方式在界面中呈现出语言选项,可以用于记录用户语言数据。需要注意的是这里只能选择已经在环境中启用的语言。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482434-403978-f20d2ce03fd3dd7d475771d480983113.png)
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482441-335002-7405e05457583343ab6625bf2951e34f.png)
大家可能会非常奇怪,为什么语言,时区这些是属于整数的数据类型,实际上是因为你看起来它存的是语言实际上寸的是整数,比如在上图我们可以看到,中文的语言代码是2052,它实际存的是这个数,所以是整数类型。
日期和时间
这块很容易理解,只要是想要保存具体的时间都可以使用日期和时间格式, 并且会在界面中以日期选择的方式帮助用户更好的填写日期和时间数据,它下面只有两个分类。
日期和时间:
数据包含日期和具体的时间,比如年月日,时分秒。比如订单的交易时间类似这种需要记录数据精确到时分秒的情况可以选择日期和时间类型。
仅日期:
数据只包含年月日,不保存具体的时分秒,比如学生表的出生日期,因为不需要具体的时间,所以选择仅日期的数据类型就可以。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482461-655571-f1786e3cda62a92da585944ee7b5bc8d.png)
其他数据类型
除了能够被分为文本、整数和日期时间以外,Dataverse 还提供了其他一些数据类型方便大家使用。
查找
用来创建表关系,这个我们会在下一期详细介绍
单选
会在界面中呈现出一个下拉选项,用户只能从中进行单项选择。比如在学生表中的性别,实际上就男女两个选项,而且用户只能从中选择一个,这种情况下就可以使用单选的数据类型。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482483-951408-6ec09ec781c1aee8d64b6771f908b3a0.png)
关于选择类的数据类型,Dataverse 都给我们提供了一些常用的选项集,比如类别,审批阶段等等。我们可以直接使用这些选项集或者自己重新创建一个。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482493-369472-416e238335c639524705b9298cdfd7a0.png)
因为默认没有提供性别的选项集,所以这里我就新建了一个。在这里我们可以设置选项集的名字以及其中有几个可选项。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482501-615844-5fa076bd67e294f20b8551c1dcb2c066.png)
并且我们可以决定新的选项集是是否要放到刚才看到的选项集列表中,如果放上去就相当于是一个全局的选项集,可以和大家一起协作维护。否则就是本地的选项集,一般不建议使用全局选项集,因为会增加全局选项集的数量,随着时间增长越来越难以维护。
多选
与单选的区别就是可以在选项集中选择多个选项。
是/否
和单选类似,只不过给用户固定死了选项,只能在两个选项中进行选择,通常用来表示一个事情的状态。比如审批成功或者拒绝,我们可以自己去定义这两个选项是什么文字。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482514-488033-d7e15e51bc9c20755e01a330cacd8c2a.png)
多行文本
与文本区域类似,区别在于多行文本可以存储更多的文字内容,文字上限为 1,048,576 。
当需要存储的文字内容超过 4000个以后,可以使用多行文本进行文字内容的保存。
浮点数
我们可以认为浮点数是带小数的数字,为什么叫浮点数呢,因为浮点数是浮动的。计算机的存储空间有限。
不能精确的表现出无限的小数,只能保证一段一定长度的有效数字而浮点数最多支持5位小数。比如下图中我想输入 3.1415926 ,但实际上只能保留5位小数。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482531-379813-f95f7a2b25396d86d12bf34038ccc7bf.png)
小数
十进制小数,与浮点数相比最多可以保存10位小数。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482540-690294-dafcb6e115397a5c20ac8a7646546001.png)
货币
货币类型的列是用来存储跟钱相关的数据,比如学生表的学费。
当你在表中添加了一个货币类型的列“已交学费”之后,Dataverse 会自动帮你在表中创建3个列,分别是 Currency ,Exchange Rate 和“已交学费(Base)”。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482548-413798-306176aa5ef1d675423aaa8133a88c43.png)
从上图中我们可以看出,他们分别是 :
Currency :当前记录使用的币种人民币
已交学费:根据 Currency 币种填写的钱数 1000人民币
已交学费(Base):转化为环境中设置的基础货币是多少钱 156美元
Exchange Rate :当前货币与环境中的基础货币汇率是多少 6.3945
客户
可以从标准表中的 Accounts 或者 Contacts 中检索客户数据,并从中进行选择。通常用于和 CRM 相关的场景,比如指定客户。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482563-58081-6ac3368a10b90470ec2e8f21cbfc892b.png)
图像
可以让用户上传一张不超过30MB的图片,通常会将该图片用作这条记录的头像。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482574-978910-81ed9961998701380017af7c696ae451.png)
文件
与上面的图像相比,文件类型支持更大的文件内容。可以存储做多 128 mb 的文件,比如你的图片超过30MB 但是你还想要保存,那就可以选择用文件的方式进行存储。当然它通常不是用来保存图片的,比如客户的资料,档案,要审批的文件等等,类似这些场景可以用文件类型进行保存。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647482582-477397-6a3368b30ab9845ab46ad1a5c1474542.png)
除了以上介绍的数据类型以外,在创建列时,我们还可以将列设置为计算列或汇总列。这两个配置可以帮助我们对列中的数据进行一些自动的计算。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647483444-531578-9a12d7b878a034b0e25fefb5dec7930b.png)
计算列
将列设置为计算列时,可以通过计算公式自动给该列进行赋值。
举一个最简单的例子,我有省、市、区、街道和详细地址这几个列。
但是我现在还需要存储一个完整地址,为了不让用户重新输入内容,我可以将完整地址设置为计算列。
然后将其计算公式设置为:Concat(省,市,区,街道,详细地址)。
这样每当有一条新记录被创建的时候,计算列都会根据之前设置好的公式自动填写完整地址这一列的数据。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647483455-282025-95c571103a14011d9d675a6b4214dd9e.png)
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647483462-479631-5ef3406cde0015ad529df2b31e33077a.png)
需要重点说明的一点是计算列只能基于自己的表和父表当中的列数据进行计算。(关于什么是父表,会在下期进行说明)
汇总列
通过汇总列可以通过定期运行的聚合函数自动给该列进行赋值。
比如针对学生和班级,我可以在班级表中新建一个汇总列,然后通过筛选方法筛选出性别为男的学生,并对这些学生进行求和。如果以 CRM 中的场景为例 汇总字段还可以用来对每个客户的总资产进行求和,所有的相关商机数量等等。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647483470-251538-3b8e2ad8766440b1b0809823adf651f4.png)
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647483477-513864-0953420f76ffd2246cfdd8caaac5794b.png)
需要注意的一点是汇总列并不是实时对数据进行汇总,而是定时执行汇总操作,如果想要当前的汇总结果可以点击 Recalculate 立刻进行汇总计算。
关于计算和汇总列的内容还有很多,本期只是进行了简单说明。
本期重点总结:
常用的数据类型有文本、整数、日期、自动编号、单选和多选
计算列可以根据公式自动填充数据,比如根据用户填写的省市区街道内容,自动合并得到完整地址。
汇总列可以定期对相关表的数据进行筛选和汇总运算,比如在班级表中定期汇总出属于当前班级的男生人数,或者自动汇总出每名客户的商机总数等等。
看完所有的数据类型后我发现,一大半都是跟 CRM 相关,不愧是有 18年历史基于 Microsoft CRM 的 Dataverse 。大家想要了解 Dataverse 的前世今生,可以前往历史文章查看 Fusion 开发 第六章 Microsoft Dataverse 就只是一个数据库?