平时我们经常用到需要根据一定的需求在数据中把符合需求的数据提取出来,那我们看下在Power Query中是如何进行操作的。...我们知道,在Power Query中数据是有多种类型的,那提取的方式也是各不一样。 以下是一张整体的有关数据提取可能涉及到的函数集。可以点击查看大图 ? 我们今天来主要看下文本中的数据提取。 ?...我们知道在Power Query中对于数据类型规定的比较严格,所以我们在使用函数的时候也要时刻注意着数据类型,包括函数参数的类型,函数生成的最终类型。...在Power Query菜单中也可以进行部分操作。 ?...Power Query中的“#”转义字符?)。
我们了解到在Power Query中提取数据会因为数据格式不同而提取的方法不同。 ? 前我们讲了数据提取的文本篇,这次我们来看下数值格式的数据如何进行提取。 ? 数值的提取主要是进位的问题。...在Power Query中对于进位有着比Excel更多的选择。 1....向下舍去(类似Excel中的Rounddown) Number.RoundDown(number as nullable number, optional digits as nullable number...向上进位(类似Excel中的Roundup) Number.RoundUp(number as nullable number, optional digits as nullable number)...roundingMode as nullable RoundingMode.Type) as nullable number 此函数比Excel里面多一个参数,一共有3个参数,第三个参数是针对如果碰到数字5如何进行处理
如果为指定条件,则提取的数据为直到不满足条件前的数据。...List.FirstN(列表[数字], each _=2)={} 解释:列表[数字]这个是在其他查询中引用列表的格式。...因为数字是从1开始,12,获取的是第一个不满足条件之前的数据,第一个就不满足,所以结果为空列表 (二)从尾开始提取 1....List.LastN(列表[数字], each _=9)={} 解释:列表[数字]这个是在其他查询中引用列表的格式。...因为末尾数字是从10开始,不满足条件,获取的是第一个不满足条件之前的数据,第一个就不满足,所以结果为空列表。 (三)根据值提取 1.
今天我们继续来了解下,在Power Query中如何提取需要的时间。 1....(datetime as any) as any 返回的是小时初始值,返回的格式是提取数据的格式 Time.StartOfHour(#datetime(2018,11,11,12,30,30))=2018.../11/11 12:00:00 Time.EndOfHour(datetime as any) as any 返回的是小时初始值,返回的格式是提取数据的格式 Time.EndOfHour(#datetime...提取的是一个数值0-6,第2个参数是设置星期从那天开始,默认是从星期一开始算起(参数1)。...返回的格式为原始日期数据格式。
(五)替代指定数据提取。 1....找到目标值并用指定值替换后提取 List.ReplaceValue(list as list, oldValue as any, newValue as any,replacer as function...List.ReplaceMatchingItems(list as list, replacements as list, optional equationCriteria as any) as list 第1参数是数据列表
今天我们来了解下,在Power Query中如何提取需要的时间。 日期作为业务维度里面一个很重要的因素,大部分的业务分析都离不开时间这个条件,所以对于时间的提取的准确性就显得尤为重要。...---- 在转换获取中,我们也可以通过快速方式及菜单方式进行转换格式获取。 ---- 1....as any) as any 提取起始季度,返回的格式是提取数据的格式 Date.StartOfQuarter(#date(2018,11,1))=2018/10/1 Date.StartOfQuarter...(#datetime(2018,5,1,09,10,1))=2018/4/1 0:00:00 Date.EndOfQuarter(datetime as any) as any 提取结束季度,返回的格式是提取数据的格式...))=2018/11/1 0:00:00 Date.EndOfMonth(datetime as any) as any 提取期末月份,返回的格式是提取数据的格式 Date.EndOfMonth(#date
(六)删除指定数据进行提取 1....删除指定数据进行提取 List.RemoveRange(list as list, index as number, optional count as number) as list 第1参数为数据列表...删除空值后进行提取 List.RemoveNulls(list as list) as list 对于列表中的空值进行删除,生成一个新的列表,只有1个参数。也可以理解为对一个列表选择不等于空值。...从尾删除列表的最后几个数据 List.RemoveLastN(list as list, optionalcountOrCondition as any) as any 从列表尾删除N个元素。...问:那如何删除列表中值包含"a"的所有元素?
(四) 根据条件提取数据 1....根据条件从列表中进行提取 List.Select(list as list, selection as function) as list 第二个是一个函数公式,返回的是也是一个列表。...跳过指定数据提取 List.Skip(list as list, optional countOrCondition as any) as any 如果第2参数省略,则默认跳过第一个值;如果第2参数为数值...{1..10},7)={8,9,10} List.Skip({1..10}, each _<5)={5..10} List.Skip({1..10}, each _>5)={1..10} 解释:第1个数据为...,为必选项,从0开始;第3参数为偏移后的位数,返回的是list格式。
在Power Query中如果想要插入自定义的一行,有一个专门的函数Table.InsertRows,这个函数可以帮助我们在指定行的位置插入我们所需要的数据,但是这个函数需要我们把每一列的数据都要补上,...但是大部分情况我们可能只需要在某一列中插入一个指定数据即可,这种该如何操作呢?...成绩=List.Sum(源[成绩]), 学科=null] } ) 那如果列数很多的话如何处理呢...记录中的字段名,也就是表格的标题 这个我们可以通过Table.ColumnNames进行获取。 2. 记录中的值。...批量的null,我们要把其他未输入的字段名都用null来填充 null的数量是列名中除我们指定列数据以外都需要赋值null Table.InsertRows(源, 3, //插入还是需要使用到此函数
List.Range(单字段组合,0,1)& List.Range(单字段组合,1,3)) 解释:第一个List.Range目的是为了固定班级字段;第2个List.Range是为了提取第一组的数据...同一样的操作,提取第二部分的数据。 (三) 组合表格 Text.Combine将之前组合的表格进行合并。 (四) 重命名字段名 ?
按错误的信息提取 Table.SelectRowsWithErrors(tableas table,optional columns as nullable list)as table 第1参数为需要操作的表...;第2参数是需要偏移的行,从0开始,不偏移为0,是数字格式;第3参数是需要返回的行数,是数字格式,默认是返回偏移后的全部行;返回的也是表格格式。...按文本匹配后提取 Table.FindText(table as table,text as text)as table 第1参数是需要操作的表;第2参数为需要查找的文本;返回的也是一个表格式。...因为此数据源相对简单,所以返回了学科中数学包含"数",所以返回这一行。...案例参考:如何全局匹配关键词查找
样例表格: 之前讲了从表头获取,那对应的就有从表尾获取。 (一)从表尾开始提取 1....例: Table.LastN(数据,1) = Table.Last(数据) 解释:因为Table.LastN返回的是table格式,而Table.Last返回的是record格式,所以不相等。...Table.LastN(数据,each _[成绩]<90)= 解释:因为成绩是降序排列,所以返回的结果是直到不满足条件结束。...Table.LastN(数据,each_[成绩]>90)= #table({},{}) 解释:因为最后一条记录是80,不满足第2参数的条件,所以没有满足条件的数据,返回的结果就是一个空表。...Table.LastN(数据, each Text.Contains([姓名],"五"))= 解释:查找姓名包含"五"的记录,并返回形成表格。
删除指定数据提取 ? 1....删除错误行提取 Table.RemoveRowsWithErrors(table as table, optionalcolumns as nullablelist) as table 第1参数是需要操作的表...1代表需要操作的表;参数2代表偏移的位置,数字从0开始;第3参数代表需要删除的行,默认为1。...解释:从表中偏移2行后再删除1行,也就是删除的是原表的第3行。 3....源代表的是步骤名称,表示在当前查询中进行的操作,因为是记录所以有明确的记录值。记录是没有筛选的,所以只有绝对的引用值。
样例表格: (一)从表头开始提取 1....例: Table.FirstN(数据,1) = Table.First(数据) 解释:因为Table.FirstN返回的是table格式,而Table.First返回的是record格式,所以不相等...Table.FirstN(数据,each _[成绩]>80)= 解释:因为成绩是降序排列,所以返回的结果是直到不满足条件结束。...Table.FirstN(数据,each_[成绩]<100)= #table({},{}) 解释:因为第一条记录是100,不满足第2参数的条件,所以没有满足条件的数据,返回的结果就是一个空表。...Table.FirstN(数据, each Text.Contains([姓名],"张"))= 解释:查找姓名包含"张"的记录,并返回形成表格。
样例表格: (一)根据值大小提取 1....例: Table.Min(数据,"成绩")=[姓名="王五",成绩=80,学科="英语"] Table.Min(数据,"姓名")=[姓名="张三",成绩=100,学科="数学"] 解释:排序大小是根据Unicode...Table.Min(数据,List.Last(Table.ColumnNames(数据)))= [姓名="张三",成绩=100,学科="数学"] 解释:返回最后一个字段标题的最小值的记录。...例: Table.Max(数据,"成绩")=[姓名="张三",成绩=100,学科="数学"] Table.Max(数据,"姓名")=[姓名="王五",成绩=80,学科="英语"] 解释:排序大小是根据Unicode...Table.Max(数据,List.Last(Table.ColumnNames(数据)))= [姓名="张三",成绩=100,学科="数学"] 解释:返回最后一个字段标题的最小值的记录。
如果是数字则代表直接从顶部开始跳过指定行数,0的话代表不跳过,如果是条件,则从头开始跳过满足条件的行直到不满足条件为止;返回的是表格形式。...例: Table.Skip(源,1)= Table.Skip(源, each [成绩]>=90)= Table.Skip(源, each [成绩]=90)= 解释:因为从第一条开始匹配,数值100不等于...Table.SelectRows(源, each List.Contains({"张三","张四","李四"},[姓名]))= 解释:这次把条件倒过来了,通过一个姓名列表去筛选源表中符合条件的数据。...把姓名中含有{"张三","张四","李四"}这个列表的数据筛选出来。 3....Table.SelectColumns(源, List.FindText(Table.ColumnNames(源),"成"))= 解释:返回本表中包含“成”的字段。
样例表格: (一)提取表标题 Table.ColumnNames(table as table) as list 从指定表中生成一个标题列表,只有为一个参数表格式,返回的是一个列表格式。...例: Table.ColumnNames(数据)={"姓名","成绩","学科"} 解释:在其他查询中提取标题,表名称为查询名称。...(二)提取表字段数 Table.ColumnCount(table as table) as number 从指定表中生成一个字段数,返回的是一个数字格式。...(三)提取表记录数 Table.RowCount(table as table) as number 提取表中的记录数,也就类似于行数,返回的是一个数字格式。...例: Table.RowCount(数据)=3 Table.RowCount(源)=3 解释:这里的3代表在原查询表里找到3条记录数,这个3可以理解为代表图中最左侧的1,2,3,取最大一个值。
之前我们了解到了如何把2列数据进行合并的基本操作,Power Query中如何把多列数据合并?也就是把多个字段进行组合并转成表。那如果这类的数据很多,如何批量转换呢?...我们了解到在代码中的字段数据列表实际上是个已经经过Table.ToColumns处理过的一个列表嵌套列表格式。所以我们在优化代码的时候可以把这一步处理的过程直接作为自定义函数的部分流程。...这个是判断合并数据起始位置的提取。_相当于x的需要处理循环的次数,y相当于需要转换的列数。...提取的次数 X值 Y值 固定列终点 提取的位置 1 1 3 1 1 2 2 3 1 4 3 3 3 1 7 5....批量多列合并(源,3,3,3) 解释:批量多列合并,这个是自定义查询的函数名称,源代表的是需处理的数据表,第2参数的3代表需要循环处理的次数,第3参数的3代表需要合并数据的列数,第4参数的3代表保留前3
原数据: ? 整理后数据: ? 以上是一份视频文件名称,通过PQ对文件夹内的名称进行导入后得到的。由3部分组成:集数+文件名+文件格式。我们需要分别把其拆分成3个列,我们看下如何操作。...提取在数字格式和小数点之间的文件名 但是集数和文件名的提取相对比较麻烦。...有了第一个中文字符所在的位置,那提取就很容易了,只需要使用Text.Range进行提取即可。 因为我们这里是需要查找所有的中文字符,有几种处理思路。 1....) ) //提取第一个中文所在位置 2....龟"}) //查找第一个中文所在的位置 我们可以根据以上的案例,可以自定义一个函数,以后就可以方便提取。 ? 请点个赞,转发分享给更多的人。
现在数据已经维护进了SharePoint List,那么怎么从数据库中将维护的数据查询出来呢? SharePoint 的列表数据都存储在Content DB中,其中最最重要的表就是[dbo]....[AllUserData],这个表中的一行数据就对应SharePoint List中的一条数据。下面介绍下如何从Content DB中查询出List数据。...User,Lookup等数据类型,则整个List的数据都可以从[dbo]....过滤掉历史版本的数据。 如果这个列表开启了版本控制,那么我们查询的结果可能包含多个版本的数据,而我们只需要最新版本的数据,不希望历史版本数据出现在查询中。...还是以Case2的用户为例,我们希望知道每条用户数据最后是谁编辑的,将编辑者的登录名显示出来。那么我们需要进行如下操作: 1. 查询用户表,并包含tp_Editor列。
领取专属 10元无门槛券
手把手带您无忧上云