Power BI里怎么修改“Enter Data”所产生的table

180 阅读2分钟

建表容易修改难

大家在Power BI里经常需要创建一些辅助表,最简单的方法就是用“Enter Data”来创建数据

image.png 但是假如你想修改enter data创建出来的table,那就很困难了(在下不是专门搞powerbi的,要是哪位高手有更好的方法,请指教)

如果你点击“Edit Query”,你会发现这个表实际上把数据保存成一个二进制文件(base64字符串)

image.png

例如

let  
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Tc67DsIwDAXQX6kyd+iDx4xgYakQHaMOFrWqSGliJab8PsYKiNHH90rXWnNLSJCAXQymNq2ZamvOMTyQuLrj5vAl3CmfiBK4DF6kVxlwiey0nAV3v1jcwFcjw4LCe+XxmQnDjLPIQeWSIpHex7+iQtuoXFfyuGLg776uKQM/D9ZoXwhks/elLTa9AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Project Status" = _t, Order = _t]),  
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Project Status", type text}, {"Order", Int64.Type}})  
in  
    #"Changed Type"

所以你得先解压这个字符串,修改数据,然后再encode。

如果你仔细看这段power query代码的时,你会发现PowerBI用了Compression.Deflate这个方式来解压。

Decode/Encode with Deflate

我一开始也不知道咋搞,又是问copilot又是问deepseek,后来发现网上有蛮多在线encode/decode deflate格式的工具,比如这个jgraph.github.io/drawio-tool…

界面非常简单,注意它默认是开启“URL Encode”的,你要把这个setting给关了,然后就直接把base64字符串给贴上去,点“Decode”进行解压,你会得到一个数组。

encodedecode.gif 你改了数组之后,然后再点“Encode”,会生成一串新的base64字符串,然后你在powerbi里把它替换上去就好了。 是不是很简单!

最好用DATATABLE 函数创建辅助表

前面说了“Enter Data”是最简单的一种创建辅助表的方式,如果大家会一点DAX语法,最好还是用DATATABLE函数来创建。 比如

MyTable = DATATABLE(
    "ID", INTEGER,
    "Name", STRING,
    "Age", INTEGER,
    "Department", STRING,
    {
        {1, "Alice", 30, "Sales"},
        {2, "Bob", 25, "Marketing"},
        {3, "Charlie", 35, "IT"}
    }
)

这样方便以后的修改,就不需要像我这样苦思冥想了


后来我又发现更简单的方法,www.youtube.com/watch?v=5nE… 可以直接双击“Source”进行修改。。。

image.png