我想在PowerBi中加载图片,问题是图片比32kb大,因此它只显示了图片的一部分。 是否有一些快速的方法来解决PowerBi限制并显示整个图片?
我从Activite目录中获取图片,然后将二进制文件转换为文本,以将其设置为图片(使用此公式:data:image / jpeg; base64)
答案 0 :(得分:3)
克里斯·韦伯(Chriss Webb)有一篇很棒的文章,Storing Large Images In Power BI Datasets,如果没有原始文章,我将在此处复制要点。
Power Query引擎可以加载到数据集中表中的单个单元格中的文本值的最大长度为32766个字符-超出此限制的任何部分,文本将被静默截断。要解决此问题,您需要做的是将图像的文本表示形式分成多个较小的文本值,这些值存储在多个行中,每个值均小于32766个字符的限制,然后在DAX度量中将其重新组合数据已加载。
在M中拆分文本实际上并不难,但是很难有效地完成。这是一个M查询的示例,该查询从上方文件夹中的所有文件中读取所有数据并返回一个表:
let
//Get list of files in folder
Source = Folder.Files("C:\Users\Chris\Documents\PQ Pics"),
//Remove unnecessary columns
RemoveOtherColumns = Table.SelectColumns(Source,{"Content", "Name"}),
//Creates Splitter function
SplitTextFunction = Splitter.SplitTextByRepeatedLengths(30000),
//Converts table of files to list
ListInput = Table.ToRows(RemoveOtherColumns),
//Function to convert binary of photo to multiple
//text values
ConvertOneFile = (InputRow as list) =>
let
BinaryIn = InputRow{0},
FileName = InputRow{1},
BinaryText = Binary.ToText(BinaryIn, BinaryEncoding.Base64),
SplitUpText = SplitTextFunction(BinaryText),
AddFileName = List.Transform(SplitUpText, each {FileName,_})
in
AddFileName,
//Loops over all photos and calls the above function
ConvertAllFiles = List.Transform(ListInput, each ConvertOneFile(_)),
//Combines lists together
CombineLists = List.Combine(ConvertAllFiles),
//Converts results to table
ToTable = #table(type table[Name=text,Pic=text],CombineLists),
//Adds index column to output table
AddIndexColumn = Table.AddIndexColumn(ToTable, "Index", 0, 1)
in
AddIndexColumn
以下是上述查询返回的内容:
Pic列包含拆分的文本值,每个文本值均小于32766个字符的限制,因此,将此表加载到Power BI中时,不会发生截断。索引列是必需的,因为如果没有索引列,我们将无法以正确的顺序重新组合所有拆分值。
剩下要做的就是创建一个使用DAX ConcatenateX()函数将所有文本片段重新组合为单个值的度量,如下所示:
Display Image =
IF(
HASONEVALUE('PQ Pics'[Name]),
"data:image/jpeg;base64, " &
CONCATENATEX(
'PQ Pics',
'PQ Pics'[Pic],
,
'PQ Pics'[Index],
ASC)
)
…将此度量的数据类别设置为“图像URL”:
...然后在报告中显示图像的值:
答案 1 :(得分:2)
将图像直接存储在Power BI中不是最佳选择,因为使用转换为base64方法的大小将限制为32KB。如果可能的话,最好提取图像,并将其放置在Azure Blob存储区(或其他可访问的存储区)中,然后从那里进行引用。您可以使用数据类型“图像URL”显示在表中,也可以使用HTML查看器自定义视觉图像通过url显示图像。您必须使用Power BI来获取Blob存储中的图像列表,但是如果图像名称相同,则可以将该表链接到数据集。
答案 2 :(得分:0)
这很有效,除了: