When I connect the Tracer 3D Power BI visual to mesh fields, only some geometry is visualized with a warning icon. Hovering my cursor over the icon displays the message “Failed to parse data (Number of elements)”.
The Tracer visuals render geometry using gLTF text strings stored in database records. Power BI’s report environment loads text strings up to 32,766 characters. It is very possible for a gLTF text string to exceed this and Power BI will silently truncate these strings. Here is a possible workaround to rendering large meshes
Problem
- My mesh strings are exceeding Power BI’s character limit when loading data into the Report.
Solution
- Go into the “Transform Data” environment in Power BI.
- Choose your mesh column and choose “Split column” > “By number of characters”
- Enter in the value of 32,766 characters and choose to split “Repeatedly”
- Drop down the Advanced Options tab
- Edit the “Number of columns to split into” field by entering the desired number of columns.
- Note: Our templates use 25 columns, which is sufficient for most of the Tracer datasets we have tested. Some datasets with complex meshes will need to use even more columns to resolve the “Failed to Parse Data” error.
- Save and load the data with split mesh columns into your report
- Within the Power BI report environment, create a New Column in your data source
- Use the CONCATENATE() formulate to merge your split mesh columns back together. You can combine multiple “Concatenate” functions to string together long lists of columns.
- We provide the formula to combine 25 columns below. You may need to edit the table names or column names for this formula to work with your dataset. Additional concatenation functions can be added by following the pattern in this example.
Mesh = CONCATENATE(Element[Mesh.1], CONCATENATE(Element[Mesh.2],CONCATENATE(Element[Mesh.3],CONCATENATE(Element[Mesh.4],CONCATENATE(Element[Mesh.5],CONCATENATE(Element[Mesh.6],CONCATENATE(Element[Mesh.7],CONCATENATE(Element[Mesh.8],CONCATENATE(Element[Mesh.9],CONCATENATE(Element[Mesh.10],CONCATENATE(Element[Mesh.11],CONCATENATE(Element[Mesh.12],CONCATENATE(Element[Mesh.13],CONCATENATE(Element[Mesh.14],CONCATENATE(Element[Mesh.15],CONCATENATE(Element[Mesh.16],CONCATENATE(Element[Mesh.17],CONCATENATE(Element[Mesh.18],CONCATENATE(Element[Mesh.19],CONCATENATE(Element[Mesh.20],CONCATENATE(Element[Mesh.21],CONCATENATE(Element[Mesh.22],CONCATENATE(Element[Mesh.23],CONCATENATE(Element[Mesh.24],Element[Mesh.25]))))))))))))))))))))))))