将 json 数据拆分为新的 table 以使用具有直接查询连接的 PowerBI 可视化数据

Split json data into new table to visualize data using PowerBI with a Direct Query connection

我们使用实时连接(即直接查询)将 PowerBI 连接到数据库,其中一个表的特定列包含 JSON 格式的动态数据列表,如下所示:

row1 : {"models":[{"modelname":"name1","Count":value1}]}    
row2: {"models":[{"modelname":"name1","Count":value1},{"modelname":"name2","Count":value2}]}"

要使此 JSON 数据有用,必须将其拆分然后再使用。为此,在导入查询连接中,我们要按照以下说明进行操作:solution for import query connection

但该解决方案在直接查询连接中不可用。

这个问题有解决办法吗?

DirectQuery 表示 Power BI 直接连接到您的源数据库。它本身不存储任何数据;所有请求都会发送回您的源数据库。

您在问题中引用的解析 JSON 解决方案在数据到达 Power BI 后对其进行操作(然后将其存储在本地)。它不是您在 DirectQuery 模式下的选项。

两种值得探索的可能性:

  1. 切换到导入模式,这将为您打开完整的 Power Query 公式语言(但这有很多其他含义,可能意味着也可能不意味着这对您来说是一个可行的选择 -请参阅下面的文档 link)。我包括这个主要是为了全面。

  2. 与其在直接查询模式下导入完整的 table,不如单击 'Advanced options' 选项并使用数据库引擎的内置语言编写 SQL查询将在数据到达 Power BI 之前以您想要的方式提取您想要的数据。

在 Power BI DirectQuery 模式下使用 SQL Server 2016 的内置 JSON 解析工具的示例

对于选项 #2,您可能需要做出一些限制或妥协。例如,您可能需要提取的 JSON 与源 table 中的其余列分开 table。有 100 万行限制。可能没有简单的方法可以使用数据库语言以您想要的方式提取数据。 (注意:我自己从未这样做过,所以如果在尝试之后,您有任何提示或陷阱要分享,请post返回此处)

这里有关于直接查询模式的好处和局限性的很好的文档:https://powerbi.microsoft.com/en-us/documentation/powerbi-desktop-use-directquery/#benefits-of-using-directquery

有关 SQL Server 2016 JSON 函数的信息从这里开始:https://blogs.technet.microsoft.com/dataplatforminsider/2016/01/05/json-in-sql-server-2016-part-1-of-4/(如果您碰巧使用 SQL Server 2016)

希望对您有所帮助。