小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示: 大海:这个问题如果是在Excel里的话,用Lookup函数非常简单。...大海:这其实是Table.SelectRows进行筛选表操作时的条件,这相当于将一个自定义函数用于做条件判断,其中的(t)表示将提成比例表作为参数,而t[营业额]表示提成比例表里的营业额列,而最后面的[...如下图所示: 实际上,你还可以先写一个自定义函数,然后直接在Table.SelectRows里面进行引用,具体写法如下: 后面就可以引用该自定义函数完成数据的匹配,如下图所示:...小勤:嗯,这种分开编写自定义函数的感觉好像更容易理解一些。...大海:PQ里的函数式写法跟Excel里的公式不太一样,慢慢适应就好了。
其实这里的底数对于研究程序运行效率不重要,写代码时要考虑的是数据规模n对程序运行效率的影响,常数部分则忽略,同样的,如果不同时间复杂度的倍数关系为常数,那也可以近似认为两者为同一量级的时间复杂度...假设有底数为2和3的两个对数函数,如上图。当X取N(数据规模)时,求所对应的时间复杂度得比值,即对数函数对应的y值,用来衡量对数底数对时间复杂度的影响。...用文字表述:算法时间复杂度为log(n)时,不同底数对应的时间复杂度的倍数关系为常数,不会随着底数的不同而不同,因此可以将不同底数的对数函数所代表的时间复杂度,当作是同一类复杂度处理,即抽象成一类问题。...排序算法中有一个叫做“归并排序”或者“合并排序”的算法,它用到的就是分而治之的思想,而它的时间复杂度就是N*logN,此算法采用的是二分法,所以可以认为对应的对数函数底数为2,也有可能是三分法,底数为3...说明:为了便于说明,本文时间复杂度一概省略 O 符号。
- 今有数据 - - 添加到Power Pivot数据模型 - - 大小写咋都变了 - - 原来…… - PP导入数据时会统一大小写,即: 若某值不考虑大小写而后面再出现, 将全部统一为第一个值的形式...- 听说是……- 为了确保后续的运算速度! 这…… 虽然只有大小写差别的数据, 业务中大多的确应该同样对待, 但…… 有时候就是不一样的啊! - 肿么办?...- - Power Query 啊…… - 假如说, 如果忽略大小写相同但实际不同的, 给加上一些不可见字符, PP里不就也肯定不同了吗?...那些多出来的列? 自己想办法删掉就是了。
递归算法的时间复杂度表达式: O(T) = R * O(s) O(T)表示时间复杂度 R表示递归调用的次数 O(s)每次递归调用计算的时间复杂度 想想斐波那契函数,它的递归关系是f(n)...解释:这种情况下,我们最好是可以借助执行树,它是一颗被用来表示递归函数执行流程的数。树中的每一个节点代表递归函数的一次调用。所以,树中节点的总数与执行期间递归调用的数量相对应。...递归函数的执行树将形成一个n叉树,这个n就是递归在递归关系中出现的 次数。 还拿斐波那契函数来说事,那它会形成一个二叉树。具体可参考下图。...所以,我们可以估算出f(n)的时间复杂度就是O(2n) 备忘录 备忘录技术是用来优化递归算法时间复杂度的技术。...现在我们就可以利用文章开头列出的公式来计算备忘录技术应用后的时间复杂度:O(1)n=O(n)。 结论 备忘录不仅优化算法的时间复杂度,而且还可以简化时间复杂度的计算。
注意事项 只能用于有筛选参数的函数,例如CALCULATE,CALCULATETABLE,CLOSINGBALANCEMONTH,CLOSINGBALANCEQUARTER,CLOSINGBALANCEYEAR...,OPENINGBALANCEMONTH,OPENINGBALANCEQUARTER,OPENINGBALANCEYEAR,TOTALMTD,TOTALQTD和TOTALYTD函数 如果纯在多个嵌套,里面的为主导...作用 如果2个表之间有多个指定关系,则可以指定激活及未激活的关系来进行计算。 E. 案例 数据表1 ? 再建立一个日历表并把3个时间各自和日历表的日期列建立关系。 ?...如果我们要求2019年根据3个时间来求金额的话则可以使用UseRelationShip函数来激活关系进行计算。...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
信息判断函数 ? 比较显著的逻辑判断函数我们这里就省略了,例如IsBlank,IsText,IsError等。 我们先来看下其他不怎么常用的逻辑判断函数 (一) IsOnOrAfter A....请注意不同属性的判断依据。 D. 作用 针对每一行进行判断并返回逻辑值。 E. 案例 ? 需要筛选出找出日期为5/21日及之前的,同时等级为B级之前的内容。 表格的筛选我们使用Filter函数。...如果我们用IsOnOrAfter函数来表示的话格式如下: Filter('表1',IsOnOrAfter('表1'[日期], Date(2019,5,21...注意事项 查找的列和需要查找的值必须成对出现 查找的列必须是表里的列或者是关联表的列 如果是引用相关表的列,则相关表必须是多对1关系中处于1的表。 4....要求:我们需要筛选在数据表例是否有品牌为华为的同时产地是中国的数据。
(一) 和Excel相同用法函数 这里就不多做介绍。主要是介绍差异及DAX特有函数。 (二) 和Excel有差异函数 1....差异情况 差异原因 Excel函数 Dax函数 函数名称 DateDif DateDiff 计算方式 根据实际时间 只根据计算条件 2....DateDif(date(2018,1,30),date(2018,2,1),m)=0 DateDiff(date(2018,1,30),date(2018,2,1),Month)=1 (三) 自动返回时间列函数...D) 作用 自动生成会计日期列 E) 案例 自动生成时间日历表 CALENDARAUTO() 如果数据模型的日期范围是2018/5/1—2019/6/30,则生成的日期表范围为2018/1/1—2019.../12/31 生成会计年度为每年4月 CALENDARAUTO(3) 如果数据模型的日期范围为2018/1/1—2018/12/31,则生成的日期表范围为2017/4/1—2019/3/31。
目前,Power Query里的M函数还是不支持智能提示,所以,有时候还真的挺烦,那么,如果写着写着,忘记了某个函数怎么写,又或者忘了某个函数的参数到底是怎么样的,那该怎么办呢?...1、查函数文档 其实这个是我最常用的方法,即下载Power Query的函数参考文档,总体来说,打开pdf和在excel中操作power query界面不会互相影响。...因为比较习惯pdf中的目录结构和搜索,所以这个我用得最多。可惜,目前微软官方只有英文版的,如果英文基本过关,建议使用,另外,也有大神做了中文版的,大家可以在网络上搜索一下。...2、#shared关键字 直接在Power Query内用#shared关键字调出函数列表(为了不影响当前正在操作的查询,可以新建一个空查询来做函数查询),如下图所示: 得到函数列表后...,那么,就可以直接在Power Query里加个步骤,输入=函数名称,然后回车,即可调出该函数的帮助内容,如下图所示: 以上是我比较常用的几个关于Power Query的函数使用的帮助查询方法
考核内容:javascript 多进制与十进制的转化....题发散度: ★★★ 试题难度: ★★ 解题思路: 看到 010 就应该想到这是一个八进制的数据; 因为 : 以0开头的代表是八进制的数 所以 : 010=0*8^0+1*8^1=8 此外,以0x开头的是十六进制的数...规定表示数字的基数,是 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。...2 - 数字以二进制值显示 8 - 数字以八进制值显示 16 - 数字以十六进制值显示 首先把 010 这个八进制 转化为 十 进制 ? 参考代码: ? ? 答案: A. 16
返回 仅返回小计,不返回可被引用的具体值 C. 注意事项 只有在SUMMARIZE函数中使用。 如果分组依据有多列,而RollUp未汇总全部列,则汇总未选择列。(可以看案例加深理解) D....返回 返回分组依据的小计汇总,不返回可被引用的具体值 C. 注意事项 仅在SUMMARIZE和ADDMISSINGITEMS函数中使用。 如果和RollUp用法一样,效果也类似同RollUp。...返回 表——需要显示的列及汇总依据列及值生成的表。 C. 注意事项 如果和ROLLUPISSUBTOTAL和ISSUBTOTAL函数一起使用,参数要一致 D. 作用 重新添加包含空度量值的行 E....解释: 如果单纯通过SummarizeColumns函数进行分组的话,如果计算值为0的话,分组的内容会缺失,但是通过AddMissingItems函数可以进行恢复。...同时因为addmissingitems的原因把无成绩的这个也显示出来了。当然无度量的也就不存在判断不判断了,所以判断这里为空。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
注意事项 第一参数日期的格式可以有以下几种 有关日期时间的列的引用 CALCULATETABLE(DISTINCT()) 返回日期值的表达式 用于定义日期列的逻辑值 其他注意事项 如果当前上下文中的日期不形成连续间隔...相对于PreviousYear,PreviousQuarter,PreviousMonth,PreviousDay,NextYear,NextQuarter,NextMonth,NextDay等函数更直观...DATEADD('日历'[Date],-1,YEAR)) 上年销售额:=CALCULATE([销售额],PreviousYear('日历'[Date])) 我们仔细观察,通过数据透视表我们发现DateAdd函数因为上下文的关系...,在每个月这里都是进行同期比较,而函数PreviousYear则不是,仅仅计算上一年的合计数。...所以在使用这两个函数的进行替换使用的时候还需要注意这一点。 ? 请点个赞。
OrderBy_Expression> [, [] [, [, [] [, … ] ] ] ] ] ) 位置 参数 描述 第1参数 Table 需要计算行的表...第2参数 Expression 每一行要计算的表达式,可以是列 可选第3参数 Delimiter 合并时的分隔符 可选重复第4参数 OrderBy_Expression 排序的表达式 可选重复第5参数...作用 所有计算后的表达式进行组合,通过分隔符进行合并 D. 案例 原数据(表1) ? 效果 ?...度量值公式: ConcatenateX(Values('表1'[姓名]),'表1'[姓名],",") 同时这个功能在Power BI中已经集成在快速度量值中。 ?...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
小勤:在Power Pivot里对两个表建立了关系之后,就可以直接调用相关表的数据了,那还要Related或Lookupvalue这个函数干嘛呢? 大海:这个问题好难回答。...比如说我有订单、订单明细、产品三张表,基本关系如下图所示: 然后我们构建一个简单的分析——每个区域各月的产品销量情况,并且想将产品的类别做为一个提示项放在图表上,如下图所示:...这个时候,如果直接将产品表里的“类别”放到图中的工具提示里,将会出错(因为产品表和订单明细表是1对多的关系),比如上面的柠檬汁,应该是饮料,而不是点心: 类似这种情况下,我们就可以先用RELATED...或LOOKUPVALUE函数将相应的类别先从产品表读到订单明细表,比如上面用到的“类别_related”列: 小勤:这有点儿像是说当从多端引用一端的一些简单数据的时候,就可以用这些函数来实现简单的引用...总之,我们先把一些基本函数进行熟悉,在实际工作中碰到具体问题的时候不断想和用,慢慢就得心应手了。
; 第2参数是需要改变的列及操作(正常情况是由列名和操作函数组成,也可以是空列表); 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数; 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理...---- 例1: 此函数的必要参数只有2个,所以我们先用最基础的2个参数来进行操作。 ? 如果要把成绩统一减10分的话,那就在第2参数这里使用列名和对应的操作函数即可。...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...如果第2参数的中的学科写错或者定义了其他未在操作表中的列名,则可以通过第4参数来控制返回。...因为指定的列里有 “班级”,但是在原来的表格中不存在,所以会产生错误,但是第4参数有指定1,也就是忽略错误,最终返回的结果如图所示。除了找到的成绩列表外,其余的列数据都在后面添加了个“A”。 ?
前段时间,我发表了文章《关于CALCULATE函数,初学者特别容易混淆的问题之一!...首先,能注意到这个细节,先给这位朋友点个赞!也非常感谢能这么认真地阅读我的文章!...这其实是power bi中的视觉对象“表”的一个特性:对于统计型的数据,会默认放在图表的“值"区域,而不是在行列标题(维度)区域。...将受到“工时”字段的影响: 那么,接下来的问题就是,如果我们希望“工时”字段放在“表”中是一个“维度”,而不是一个统计的“值”,那该怎么办?...其实也比较简单,将“工时”字段的计算方式设置为“不汇总”即可: 对于Power BI中“表”所隐藏的这个行为,问题本身并不复杂,甚至,有些朋友可能并没有注意到问题的存在,但是,只有不断深入了解,知其所以然
Filter, KeepFilters KeepFilters的用法与Filter类似,只不过需要配套Calculate或者CalculateTable函数使用。...但是除了Filters只能引用列名,而其他2个函数既可以引用列名也可以引用整张表。 案例: ? 相同性: 不同函数及参数进行筛选后的返回结果。...针对姓名列这3个函数返回的结果都是一样的。返回含空值后的唯一值列。...Filters('表2'[成绩]) Values('表2'[成绩]) Distinct('表2'[成绩]) 针对成绩列这3个函数返回的结果也是一样的。...但是此时需要注意的是,这3个函数在取唯一值的时候结果会进行排序。 ? 差异性: i.
其中提到,FILTERS是一个类似于VALUES的函数,但二者有一个重要的区别——VALUES返回筛选上下文中的可见值;FILTERS返回被当前上下文筛选的值。...而FILTER函数得到的结果都是2。这里,有必要对FILTERS函数做进一步的研究。 (1)FILTERS函数,返回直接应用于指定列的筛选器值的表。...换句话说,FILTERS函数返回的是直接筛选列的值,最后得到的是一张单列去重的表。...FILTER函数返回1。这是因为切片器对产品表的产品列进行了直接筛选,所以每一行的结果都是1。 如果一开始只看书本的描述,FILTERS返回被当前上下文筛选的值。这可能让人不太容易理解。...这里的关键点是直接筛选,区别于间接筛选。 总而言之,FILTERS函数返回的是对某一列直接筛选的值,最后得到的是一张单列去重的表。
引子 接着昨天的说: 从信息安全到如何在DAX中实现for循环 前文说到可以用LEFT和RIGHT函数来将姓名中间字给换成“*”,步骤其实还比较复杂。...其实powerbi自带有一个替换值的函数:REPLACE,这个函数是从Excel中继承过来的: REPLACE(, , , <new_text...但是到了四字以上就不行了: 因此,我们需要将REPLACE函数的第三参数修改一下: 姓名5 = REPLACE([学生姓名],2,LEN([学生姓名])-2,"*") 这样就ok了。...方法二: 当然,pq也给我们提供了一个直接可以替换中间位置的函数: Text.ReplaceRange Text.ReplaceRange(text as nullable text, offset as...结论 在Power Query中,因为可以使用if函数,很多判断性的问题就可以直接进行了,而不需要像DAX中那样,通过LEFT和RIGHT函数来变相地实现。
这篇文章将带你深入理解技术的复杂度,并探讨如何有效应对这个挑战。...通过将复杂的系统分解为更小、更简单的部分,我们可以更容易地理解和管理这个系统。同时,通过抽象,我们可以隐藏不必要的细节,让我们可以专注于更重要的问题。...只有深入理解了技术复杂度,我们才能有效应对这个挑战,才能更好地利用技术来改善我们的生活和工作。 技术的复杂度是一个双刃剑。它既带来了挑战,也带来了机遇。...让我们一起,拥抱这个挑战,利用这个机遇,创造一个更好的未来。 在技术的深海中,我们都是探索者,也是创造者。...让我们携手并进,一起探索、理解并应对技术的复杂度,在这个过程中,创造出更多的价值,为我们的生活带来更多的可能性。
(一) 空值的计算 1. 计算空值 DistinctCount,CountRows,CountBlank 2....不计算空值 Count,Average (二) If嵌套条件的简化 可以使用Switch函数替代If嵌套函数,这样会更容易理解也更容易书写。...]>=80,"良", [成绩]>=70,"中", [成绩]>=60,"及格", "不及格" ) 至少使用Swith在括号的使用上要比...(三) 文本查找的差异 1. 区分大小写 Find(查找关键字,查找的文本,从第几位开始,找不到的话返回的值) 2....不区分大小写 Search(查找关键字,查找的文本,从第几位开始,找不到的话返回的值) 注意事项: 第3参数最小值为1 第4参数为数字格式 案例: Find("a","aAbca",1,100)=1 Find
领取专属 10元无门槛券
手把手带您无忧上云