从零搭建Power BI项目:彻底搞懂DAX函数与上下文
1. 项目概述搭建一个Power BI项目到底难在哪儿我见过太多人学Power BI第一周就抱着函数列表开始背SUM、AVERAGE、COUNTROWS背得滚瓜烂熟结果一打开真实业务数据就傻眼。问“为什么这个同比算出来是空白”答不上来问“为什么总数行和表格里每一行加起来对不上”更是挠头。问题不在于函数背得少而在于没有理解函数在什么背景下运行。这篇内容想解决的就是这件事。它围绕一条主线展开先搭起一个完整的Power BI分析项目再在项目里真正理解DAX函数。不是从头到尾讲一遍官方文档而是把搭建过程中最关键的几个环节拆开揉碎让你知道每个函数什么时候该用、为什么这么写、踩坑踩在哪里。适合正在学Power BI但卡在DAX上的数据分析师、运营和产品同学也适合那些已经能画出图但总觉得自己的模型“有问题”的人。我自己的经验是函数理解到位之后搭项目的速度完全不是一个量级。以前写一个带时间智能的报表要折腾一下午现在基本上十几分钟就能把度量值全部搭完而且出来的结果是敢直接给业务方看的。差别就在对上下文的理解以及对函数组合方式的熟悉程度。1.1 为什么DAX函数是“搭建”的第一道坎Power BI的上手路径其实分三段数据清洗、数据建模、可视化报表。很多教程把这三段拆成独立章节讲但实际操作中它们是缠在一起的。清洗阶段你主要在Power Query里工作写M语言这部分多数人学得很快因为思维方式跟Excel比较接近。建模阶段开始接触星型模型、维度表、事实表这里已经有人开始犯晕。真正让大多数人产生“我是不是不适合做数据分析”这种想法的是可视化阶段开始写度量值的那一刻。原因很简单在Excel里你写公式是“一个格子一个值”眼睛能看到结果在哪。但在Power BI里度量值是动态计算的同一个度量值放在卡片视觉对象、放在表格、放在矩阵里它受到的外部条件完全不同。同一个公式旁边拖了一个筛选器结果就变了。这种“看不见摸不着”的逻辑就是DAX跟Excel公式最本质的区别。打个比方Excel的公式像是你在厨房里按菜谱一步步做菜每步操作都看得见DAX度量值像是你给一个机器人下了指令“把所有红色食材的卡路里总和算出来”但机器人怎么理解“红色”取决于你之前怎么教它识别颜色。这里的“识别颜色”就是筛选上下文和行上下文。所以我一直跟身边朋友说学Power BI如果你跳过“理解函数运行机制”这一步直接去看各种炫酷图表教程那你永远只能抄作业换一道题就不会写了。这也是我把文章标题定为“搭建——理解函数”的原因搭建是过程理解是核心。1.2 理解函数的正确路径从业务问题到公式我见过很多人在学习DAX时用错方法喜欢先从函数出发把每个函数的语法、参数背下来然后等着遇到能用它的场景。这种方法效率极低因为DAX里几十个常用函数你背完一圈前面早就忘了。正确的路径应该是反向的先有一个业务问题再想怎么用函数组合去解决。比如业务方问“这个月跟去年同月比增长了多少”你要先意识到这是个“时间偏移”问题需要让日期往前拨一年然后对比同一个度量值。这时候你自然就会去查SAMEPERIODLASTYEAR怎么用查完之后你就记住了而且记得特别牢。再比如业务方问“每个月的累计销售额是多少”这是“扩展表”问题普通SUM做不到累计你需要用CALCULATE配合FILTER再加上一个比较条件。等你亲手写过一次上下文的概念就刻在脑子里了。这篇文章后面会带着你走一遍这样的完整流程。我们模拟一家零售企业的销售分析场景从原始数据到最终看板函数会一点一点变成你手里的工具而不是躺在文档里的陌生名词。2. 核心拆解DAX函数的五大类与两个上下文说DAX难难的不是语法而是你脑子里没有一个清晰的地图。DAX函数有几十个如果你按“用途”而不是“名称”去归类其实可以压缩成五大类。第一类是聚合函数这是最基础的SUM、AVERAGE、MIN、MAX、COUNTROWS、DISTINCTCOUNT都算。它们负责对一组值做数学运算。第二类是筛选函数核心代表是CALCULATE和CALCULATETABLE它们负责改变计算时的筛选条件。第三类是逻辑控制函数IF、SWITCH、AND、OR这类负责做条件判断。第四类是时间智能函数DATEADD、DATESYTD、SAMEPERIODLASTYEAR这些负责处理跟时间周期相关的计算。第五类是上下文操作函数VAR、RETURN、EARLIER、VALUES、SELECTEDVALUE这些负责读取或控制当前的计算环境。这五类里面最关键的是第二类CALCULATE它就像一座桥把其他所有函数的能力串联起来。很多人学到这里进度停滞也是因为CALCULATE里面涉及两个魔鬼概念筛选上下文和行上下文。2.1 筛选上下文你给数据加了什么“条件”筛选上下文是整个DAX体系里最重要的概念没有之一。你可以把它理解成“当前计算环境中所有生效的筛选条件的总和”。报表页面上的切片器、视觉对象里的行和列、报表级别的筛选器这些都会给一个度量值“套上”筛选条件。度量值计算时不是在整个数据表上计算而是在“被筛选后的剩余数据”上计算。我举个例子你在矩阵里放了一个行字段“省份”又放了一个度量值“总销售额”那么当矩阵显示“广东省”那一行时这个度量值不是在全部数据上算SUM而是先把数据筛选到“省份等于广东省”然后才执行SUM。这个“省份等于广东省”就是筛选上下文的一部分。理解了这一点很多奇奇怪怪的结果就说得通了。为什么同一个度量值放在不同视觉对象里数值不同因为筛选上下文变了。为什么加了切片器数字就变了因为筛选上下文增加了新条件。但光有这个理解还不够还有一个容易被忽略的点计算列和度量值的筛选上下文来源不同。计算列是在模型刷新时按行计算一次它不响应任何报表筛选度量值是在报表交互时才计算它每时每刻都在响应筛选。这也是为什么我强烈建议能写度量值就不要写计算列。计算列是静态的、写死的度量值是动态的、活着的。2.2 行上下文当前“在哪一行”进行计算行上下文比筛选上下文好理解一些但更容易被误解。当你新建计算列写了一个公式销售额 [数量] * [单价]Power BI会对这个表逐行扫描每一行都执行一遍乘法。这里的“每一行”就是行上下文。简单说行上下文定义了“循环到了哪一行”。问题出在度量值里能不能用人理解的行上下文。答案是不能直接使用。度量值里面没有“当前行”这个天然概念你必须在函数内部自己创建行上下文。最典型的例子是SUMX、FILTERX这类迭代函数它们会遍历一张表对每一行执行内部表达式然后汇总或筛选。被遍历的这张表就是行上下文存在的空间。新手经常犯的错误是把SUM和SUMX混用觉得都能算总和差不多。但它们差多了。SUM是对一整列做标量聚合SUMX是对表逐行迭代后再聚合。当你的计算逻辑只是简单的加总两者结果一样一旦需要“先算每一行的利润再汇总”SUM就无能为力了因为你没法在聚合过程中插入一行级的中间计算。你只要记住行上下文解决的是“逐行计算”的问题筛选上下文解决的是“在当前条件下计算”的问题。一个管范围一个管细度。2.3 用生活类比读懂CALCULATE与上下文转换CALCULATE为什么核心因为它的本质是“上下文转换”。这个概念是DAX最容易卡人的地方我换个说法讲。想象你是体育老师要给全班同学量身高。所谓聚合函数就是一次量完全班、算平均身高。所谓行上下文就是你一个个点名逐个量。那CALCULATE是什么呢它就像你先让全班同学换上运动服再量身高。原本的筛选上下文是“全班同学”CALCULATE替你加上了一个新条件“其中穿运动服的同学”。关键的地方来了如果在度量值里已经有一个天然的行上下文循环比如在SUMX的迭代里你想在每一行计算时再套一层条件行上下文不会自动传给CALCULATE用。CALCULATE会把当前的行上下文先忽略只保留它自己指定的筛选条件然后重新开始计算。这个机制叫“忽略行上下文保留筛选上下文并叠加自己的筛选条件”。听起来有点绕但用大白话理解就是CALCULATE在原本的“过滤后的数据范围”之上再叠一层新的过滤。它不关心你当前循环到哪一行了它只管“我要按我指定的条件筛一遍再计算”。这样你就能理解为什么那个经典公式能算同比增长了销售额同比 VAR 去年同期销售额 CALCULATE([总销售额], SAMEPERIODLASTYEAR(日期表[日期])) RETURN 去年同上期销售额这里CALCULATE接收了两个信息第一个是度量值[总销售额]第二个是时间智能函数返回的“去年同期日期集合”。整个计算的逻辑就是把筛选上下文切换到“去年同期”然后计算总销售额。凡是涉及“条件变了”的计算几乎都要经过CALCULATE。不夸张地说你DAX水平的一半体现在你对CALCULATE的理解上。2.4 常用函数速查表按使用场景索引知道了分类我整理了一个我自己常用的速查表。这张表是按业务场景索引的你脑子里装着业务问题直接去表里找函数比按字母背函数效率高很多。业务场景推荐函数说明简单求和/平均/计数SUM、AVERAGE、COUNTROWS最基础聚合直接对列操作去重计数DISTINCTCOUNT统计不重复客户数、不重复订单数计算每一行的中间值后汇总SUMX、AVERAGEX先逐行计算再聚合修改筛选条件CALCULATE所有条件变更类计算的核心按条件筛选后再计算CALCULATE FILTER比如“只计算华东区的销售额”忽略某个筛选器ALL、ALLEXCEPT固定分母时非常常用同比/环比/累计SAMEPERIODLASTYEAR、TOTALYTD、DATEADD时间智能主力函数取某个列的唯一值VALUES、DISTINCT常用于矩阵内做占比返回筛选器的当前选中值SELECTEDVALUE常用于动态标题或动态单位多条件分支判断IF、SWITCH做维度分组、区间分段你不需要一次记完。先把CALCULATE、ALL、FILTER、SUMX这几个“硬骨头”啃下来其他的函数基本都是跟它们组合使用。我在后面实操部分会反复用到这张表里的函数看完你就知道它们是怎么串起来的。3. 实操纪实从零搭建一个零售销售分析看板前面讲的概念不少这一节我们直接做一个项目。模拟场景是一家零售企业的销售分析数据模型尽量简单但业务逻辑要真实总销售额、销售额同比、累计销售额、区域排名、订单量、利润率这几个指标都要算出来。这个项目的目标不是为了展示花哨图表而是用最小成本把你带一遍完整的搭建流程让你看到函数是怎么一步步从“概念”变成“能用”的工具。3.1 第一步数据准备与关系建模打开Power BI Desktop数据源我用的是三张表销售明细表、产品表、日期表。销售明细表包含订单ID、订单日期、产品ID、区域、销量、销售额这些字段。产品表包含产品ID、产品名称、类别、成本。日期表则是我用DAX生成的连续日期表从本年1月1日到12月31日。意图很明确销售明细表当事实表产品表和日期表当维度表形成典型的星型模型。为什么要独立建日期表因为时间智能函数有一个硬性条件——必须有一张连续无空缺的日期表并且日期列要是“日期”类型、要标记为日期表。没有这张表SAMEPERIODLASTYEAR这类函数大概率返回空值。日期表的生成公式很简单日期表 ADDCOLUMNS ( CALENDAR (DATE(2024, 1, 1), DATE(2024, 12, 31)), 年份, YEAR([Date]), 月份, MONTH([Date]), 月份名称, FORMAT([Date], MMM) )这里CALENDAR生成连续日期ADDCOLUMNS在每一天后面追加年份、月份等字段。写完直接“新建表”粘贴进去就行。接下来建关系。模型视图里把产品表的“产品ID”拖到销售明细表的“产品ID”上日期表的“日期”拖到销售明细表的“订单日期”上。两个关系都是一对多方向从维度表指向事实表。这里有一个我自己多年养成的习惯把日期表的日期列设为连续日期并把“标记为日期表”打开。否则你后面写同比、累计时很容易出现“计算出来全是空白”的问题。3.2 第二步基础度量值先让数字“对”起来建模完成后第一件事不是画图而是写基础度量值。先写总销售额总销售额 SUM(销售明细[销售额])再写总订单量总订单量 COUNTROWS(销售明细)有这两个基础值打底然后开始写利润相关。产品表里有成本销售明细表里有销售额但利润是两个表字段相减不是直接一列所以必须用迭代函数总利润率 DIVIDE( SUMX(销售明细, 销售明细[销售额] - LOOKUPVALUE(产品表[成本], 产品表[产品ID], 销售明细[产品ID])), [总销售额] )LOOKUPVALUE的作用是按照产品ID从产品表里找到对应成本。这个写法能跑通但我得坦白说在实际项目中我很少这么写因为LOOKUPVALUE在这种高频计算里性能一般更推荐的做法是提前在销售明细表里通过关系或计算列把成本带进来。当时我实测下来让事实表里直接冗余一个“成本”列模型跑得更快公式也更简洁。所以在练习阶段你可以用LOOKUPVALUE练手但做正式项目时尽量在建模阶段就把需要的字段都关联或合并进事实表。写完这几个度量值先放到一张表格视觉对象里看数字对不对。这一步叫验证基线如果基础数字都不对后面所有衍生指标都是建立在沙滩上的城堡。3.3 第三步时间智能与动态分组基础数字对了开始上时间智能。销售额同比这个指标几乎是每个报表都会有的。公式长这样销售额同比% VAR 本年销售额 [总销售额] VAR 去年销售额 CALCULATE([总销售额], SAMEPERIODLASTYEAR(日期表[日期])) RETURN DIVIDE(本年销售额 - 去年销售额, 去年销售额)这个公式的套路我要详细说一遍因为你以后所有的时间智能计算都是这个模板。VAR定义变量先把今年销售额存起来。第二个VAR里用了CALCULATE它的第二个参数SAMEPERIODLASTYEAR会把筛选上下文里的日期整体拨回去年于是在日历上“显示今年”的情况下实际算的是去年同期的销售额。最后RETURN返回一个同比增长率。这里最核心的点在于CALCULATE内部改变了时间筛选范围但外部筛选上下文依然是当前的年份。两个VAR一对比同比就有了。如果你把变量换成直接嵌套的写法很容易把上下文搞乱。一开始就养成用VAR的习惯能少踩很多坑。再写累计销售额YTD销售额 TOTALYTD([总销售额], 日期表[日期])TOTALYTD不需要你手动指定“从年初到今天”的筛选条件它内部自动处理。放在表格里配合月份字段能很自然得到截至当前月份的累计值。还有一个很常见的需求是计算销售排名。比如看每个省份的销售额排名用RANKX区域销售排名 RANKX(ALL(销售明细[区域]), [总销售额], , DESC, Dense)RANKX遍历所有区域按总销售额降序排列。这里ALL的作用是取消外部筛选上下文避免排名只在当前筛选范围内进行。当时我在项目里跑这个公式第一次写忘了加ALL结果每个区域出来的排名全是1。原因就是没取消筛选上下文RANKX每次只在“当前行的区域”里跑自然永远是1。这就是上下文没想清楚的典型现场。写到这里你手里的度量值已经够搭出一个有信息量的报表了我顺手加了一个动态标题标题文本 IF( HASONEVALUE(日期表[月份]), SELECTEDVALUE(日期表[月份]) 销售分析, 全年度销售分析 )IF加HASONEVALUE判断当前页是否只筛选了一个月份。有就显示具体月份没有就显示全年度。SELECTEDVALUE从筛选上下文里提取当前被选中的值。这种细节会让报表立刻有一种“定制感”。3.4 第四步性能与可维护性优化项目基本跑通以后我不会马上收工而是花时间整理模型和度量值。这一步很多人忽略但它是项目能不能长期用下去的关键。首先是命名规范。我的习惯是基础度量、计算度量和辅助度量分开用前缀区分。比如“总销售额”这种基础值不加重命名衍生指标统一加“计算值”、“占比”等可识别的后缀。这样做的好处是当项目里已经有几十个度量值时你还能一眼找到自己要的。其次是性能体检。Power BI里按快捷键CtrlE可以打开性能分析器运行一次页面看每个视觉对象的耗时。有一次我在一个矩阵里放了三层行字段和五个度量值总耗时直接到了9秒。排查后发现问题不在视觉效果上而在于每个度量值内部都套了FILTER而FILTER在迭代大表时非常耗时。我把其中两个改成CALCULATE直接传递筛选条件后耗时降到1.5秒。这里给你一个长期经验能用CALCULATE直接设置筛选条件就不要用FILTER逐行迭代。CALCULATE的筛选条件是被优化的它会直接生成查询条件FILTER则是拿一张表逐行判断全表扫描性能天然吃亏。很多人把FILTER当万能药实际上它只是某些场景下的备选方案。最后是删除冗余列。把所有不需要的中间计算列从表里清掉。模型越大越卡字段越少越好。4. 常见问题与排查技巧实录说句实在话DAX学习中最有价值的不是那些成功的公式而是错误信息、空白输出和性能瓶颈背后的原因。这一节把我实际工作中最常撞见的几个问题整理成速查表再分享一些排查的工具型技巧。4.1 常见错误对照表报错信息一出来别慌现象直接原因排查方向时间智能计算返回空白没有可用日期表或未标记日期表检查是否新建连续日期表、是否设置为“标记为日期表”排名总是1RANKX未取消筛选上下文检查是否遗漏ALL计算列刷新后数值不变计算列本身是静态的确认要不要改成度量值函数参数类型错误传了文本给聚合函数检查字段类型是否为数字总量与明细加总不一致度量值受外部筛选影响如果分母需要固定用ALL或CALCULATETABLE同一度量值在不同页面数值不同页面筛选器不同进入“视图”检查页级筛选器行总计行为怪异总计行也处于当前上下文需要理解总计不是所有行相加我印象最深的是“排名总是1”这个坑。当时A同学把销售表按区域排了个名放出来每个区域排名都是1他以为是自己RANKX参数写错了折腾了半天。实际上就是RANKX的第二个参数在遍历过程中受到了当前行的上下文影响每次只在一个区域里排名。加上ALL之后瞬间正常。这个案例也说明排查DAX问题的时候第一反应不要是怀疑函数语法而是先问一句当前上下文是什么它在遍历什么范围4.2 性能慢九成是模型和上下文的问题做Power BI项目时间长了你会发现性能问题其实比错误问题更常见。数据量稍微一上来报表打开就转圈很多人第一反应是“数据太多了”跑去问要不要换数据库。但多数情况下问题出在DAX写法上。写一个大家最容易踩的坑直接在筛选函数里嵌套一个“应该被提前过滤”的计算列。比如你为了算利润率在销售明细表里新建了一列“利润额”然后很多度量值在这列上叠加了多层CALCULATE。这个列本身没问题但如果某些度量值里又用了FILTER去遍历明细表那性能会断崖式下降。我的排查办法很简单用性能分析器逐步刷新一个视觉对象看耗时。如果发现某个视觉对象特别慢就把它上面的度量值一个一个拆下来放到卡片视觉对象里单独计时。这样能快速定位是哪条公式拖了后腿。平时写公式的时候还要养成一个习惯尽量把重复使用的表达式定义成变量。比如销售额增长 VAR 销售额本年 SUM(销售明细[销售额]) VAR 销售额去年 CALCULATE(SUM(销售明细[销售额]), SAMEPERIODLASTYEAR(日期表[日期])) RETURN 销售额本年 - 销售额去年这样不仅可读性好而且Power BI引擎只会计算一次变量不会一遍一遍重复扫描表。对于大数据量场景这个习惯能省不少时间。4.3 避坑心得这些是我踩过之后才记住的经验第一不要一开始就想把整个公司的模型一次性搭完。先做最小的闭环两张表、三个度量值、四个视觉对象。把流程跑通之后再逐步加维度、加指标。很多人上来就铺一个几十张表的复杂模型结果关系都乱了最后连自己写过的公式都读不懂。第二度量值的命名不要用“占比占比”这种名字也别起那种看不懂的缩写。我自己吃过大亏项目做大了以后几十个度量值堆在一起没有命名规范的话找个指标要翻半天。现在我常用的规则是三个层次基础计算、业务比率、汇总汇总。分类清楚比什么高级技巧都重要。第三写完每个度量值马上放到可见的表格视觉对象里验证不要一次性写五个再集中验证。因为你一次性写五个一旦中间一个逻辑错了你要排查的范围就扩大了。写一个验一个这个习惯会帮你节省大量时间。第四如果某个计算结果跟Excel核对不上先检查有没有“重复值”或者“空白值”混在数据里。很多时候不是DAX写错了而是原始数据里同一批订单出现了两次或者日期字段存在空值。函数本身没错数据先脏了。做项目前花时间把数据质量理一遍远比在公式里绕来绕去更高效。结尾最后给你一套DAX学习的最小实践路径文章写到这儿该讲的核心内容基本都覆盖了。很多人在读完一篇干货之后容易产生一种“哦我懂了”的错觉但一打开软件又不知道先干嘛。所以最后一节我不做总结就分享一套我自己送给朋友的学习顺序。第一次接触Power BI先不要去看视频课程也不要急着买在线教程。直接用自带的数据集跟着这篇文章的步骤走一遍。第一天只需要完成三件事建日期表、建关系和写一个总销售额。第二天再尝试加一个CALCULATE、一个时间智能函数。第三天试着给业务场景加一个分组逻辑。三天下来你对函数的理解会比看半个月书来得更牢。之后的进阶方向我认为是两条线一条往模型深入去理解星型模型、粒度、关系方向这些数据建模概念另一条往上下文深入去啃CALCULATE、上下文转换、扩展表这些DAX核心机制。这两条线互相补充真正掌握之后你再看任何复杂报表脑子里都会自动浮现出它的数据流向和筛选过程。我在实际工作中最大的感受是Power BI只是一个工具真正拉开差距的是你拿到一个模糊的业务问题时能不能快速把它拆解成清晰的筛选条件、聚合逻辑和关系结构。函数不过是这些逻辑的最终表达形式。你把思路想清楚了DAX自然就通了。

相关新闻

呼叫中心智能跃迁:从成本中心到价值中心的实战路径

呼叫中心智能跃迁:从成本中心到价值中心的实战路径

十多年前我刚开始做呼叫中心运营的时候,每次开预算会都要挨一顿灵魂拷问:“话务峰值能不能再压一压?人力能不能再省两个?”那时候呼叫中心在财务报表上的位置特别清楚,就是“成本中心”,价值约等于“少花钱…

2026/10/14 14:04:16 阅读更多 →
Java大型CRM系统开发与架构设计实践

Java大型CRM系统开发与架构设计实践

1. 项目背景与核心价值这套Java大型CRM客户管理系统源码的诞生,源于当前企业数字化转型中对客户关系管理的迫切需求。我经手过多个行业的CRM实施项目,发现中小型企业往往面临两个痛点:要么使用标准化SaaS产品难以满足个性化需求,要…

2026/10/14 14:04:16 阅读更多 →
深度学习融入物理研究:PINN、符号回归与科学发现实战指南

深度学习融入物理研究:PINN、符号回归与科学发现实战指南

好,我直接进入状态。下面这篇《Python 物理研究深度学习:现代 AI 技术在科学发现中的综合指南(九)》就是基于你给的系列标题、热搜词和语境,以该系列第九篇的身份写的实战向博文。我用的是“系列老读者”的交流口吻&am…

2026/10/14 14:04:16 阅读更多 →

最新新闻

MFC+Access数据库开发实战:ADO连接与增删改查细节详解

MFC+Access数据库开发实战:ADO连接与增删改查细节详解

做这类MFC配合Access数据库的小项目,我估计很多朋友的第一反应是“都什么年代了还用这个”。但实际在企业内部、传统行业里,这种组合的生命力真的超出想象。我自己就接过一个“某内部资料管理系统”的维护需求,VS2015 MFC Access 2010&…

2026/10/14 14:45:00 阅读更多 →
MATLAB小波分析工具箱实战:信号去噪、图像压缩与特征提取

MATLAB小波分析工具箱实战:信号去噪、图像压缩与特征提取

简介:MATLAB Wavelet Toolbox 2018b 是面向信号处理、图像分析与科研工程人员的专业小波分析工具箱,适用于噪声抑制、数据压缩、金融周期识别与地震波解析等场景,适合具备一定 MATLAB 基础的中高级用户深入掌握小波理论并落地实践。资源包共 …

2026/10/14 14:45:00 阅读更多 →
MobileNet与ShuffleNet为什么快?轻量网络设计背后的工程真相

MobileNet与ShuffleNet为什么快?轻量网络设计背后的工程真相

先讲一个真实的工作场景:某项目需要在低算力的嵌入式设备上部署一个图像分类模型,一开始直接搬了标准卷积网络,帧率惨不忍睹。后来负责人说换成MobileNet试试,果真快了不少,但奇怪的是,测出来的FLOPs降了接…

2026/10/14 14:45:00 阅读更多 →
M-CSF重组蛋白:巨噬细胞研究从基础分化到前沿应用的基石

M-CSF重组蛋白:巨噬细胞研究从基础分化到前沿应用的基石

简述: 本文围绕巨噬细胞集落刺激因子(M- CSF)的分子特征与生物学功能,系统阐述其作为巨噬细胞分化核心驱动因子在骨髓来源巨噬细胞体外诱导中的关键作用,分析M- CSF在缺氧免疫、器官纤维化、代谢炎症、生物材料相容性和…

2026/10/14 14:45:00 阅读更多 →
人脸年龄估计方法综述:分类、回归与标签分布学习的工程实践指南

人脸年龄估计方法综述:分类、回归与标签分布学习的工程实践指南

人脸年龄估计(facial age estimation)这几年一直是计算机视觉里的热门方向。不管是零售场景的客群年龄画像、内容平台的年龄段偏好推荐,还是安防场景里作为身份辨识的辅助维度,年龄都是人脸属性中信息量最大、也最难搞的一类。最近…

2026/10/14 14:45:00 阅读更多 →
firebase-ios-sdk 接入实战:模块化依赖、核心功能与避坑指南

firebase-ios-sdk 接入实战:模块化依赖、核心功能与避坑指南

1. 项目概述与核心价值定位1.1 这个 SDK 到底解决什么问题firebase-ios-sdk 是 Google 官方维护的一套面向 Apple 平台的原生开发工具包,覆盖 iOS、macOS、tvOS 以及 watchOS。它的核心价值在于把后端基础设施的复杂度封装成客户端可直接调用的 API,让开…

2026/10/14 14:44:00 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →