zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Power BI中的文本大写/小写自动更改现象

2023-04-18 14:54:29 时间

在处理一些英文姓名时,经常会发现,excel表中的大小写和Power BI中的不一样,这篇文章简单说明一下:

如上图所示,在pq中处理数据时大小写是与excel完全一致的,但是加载到报表中就会发现已经发生了变化。

WHY?

原因很简单:Power BI 的引擎不区分大小写(这一点既有好处,又会带来一些意想不到的问题)。同时,Power BI 的引擎很智能,它尽可能地减少重复计算和无效计算:

从局部刷新到节省算力,微软在省钱上从不叨叨

双“局部切换”与特朗普的割韭菜

因此,我们按照这两个大的原则来拆解一下Power BI 引擎的工作过程(大致应该是如此):

  1. 加载数据时,引擎开始从上到下逐行读取数据。它看到的第一个名称是第 1 行,ID 1:"San Zhang"。它将该值存储在一个列表中,用于跟踪 Name 的唯一值。然后,它将 ID 和对"San Zhang"的引用存储在 Names 列表中,并继续执行第 2 行。
  2. 对于第 2 行,它会看到另一个名字:"Sure Liu"。它将它与已经存储在名称列表中的内容("San Zhang")进行比较,忽略大小写,并发现它不一样。它很高兴地将这个新的值存储在单独的列表中,存储ID和引用,并继续3、4行,这时候列表中有"San Zhang"、"Sure Liu"、"Doing Zhang"、"Champion Wang"四个值。
  3. 对于第5行,它将"SURE LIU"与它已经存储的四个值进行比较,并得出结论"SURE LIU"与"Sure Liu"相同(请记住,它不区分大小写,因此这些确实是相同的)。由于它们是相同的,因此它不会单独存储"SURE LIU",而是将"5"存储为ID,然后将名称引用到之前已经存储的"Sure Liu"。对于第 6 行,完全相同:"SURE Liu"与忽略大写的"Sure Liu"相同。对于第7 行,"doing zhang"与忽略大写的"Doing Zhang"相同,因此同样不变。第5行的"CHAMPION WANG"同样与忽略大小写的"Champion Wang"相同。

经过上面的这些运算步骤,Power BI 引擎只需要记录第一列ID的全部行和Name列的4个数据即可(再额外加一点索引关系),无需将8个数据全都存储起来。

对于以上的数据,总共24个数据,但是Power BI 引擎只需要记录16个即可,节省大约1/4的算力。

如果数据量大的话,再配合引擎的其他节省算力的方式,这么做还是很能节省空间与算力的。

但是很多时候我们并不认为A和a是同一个字符,比如在计算生物学上的遗传配对时,AA、Aa、aa是完全不同的基因型,比如一道典型的高中生物学的问题,我想用Power BI来做:

例题:基因型和表现型基因型AaBaCcDd和aaBbCcDd的个体杂交(遵循自由组合定律)则后代基因型和表现型的数目分别是:______和______。

在Power BI的引擎处理过程中,AaBaCcDdaaBbCcDd完全是一回事,根本解决不了问题。

那么问题来了:

如果我们想让a和A分别按照原先的大小写进行显示,该如何做呢?

这篇文章可能会给你思路:

如何在矩阵的行上显示“其他”【4】看得见与看不见,看上去看不见但还是能看得见,看上去看不见也真的看不见

题外话:还是中文名较比好,不存在以上的些这问题,甚至变改了字文序顺,你都可能没有察觉?