将json数据拆分为新表,以使用具有Direct Query连接的PowerBI可视化数据

时间:2017-04-03 11:43:55

标签: json powerbi

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

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

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

但该解决方案在Direct Query连接中不可用。

此问题是否有解决方法?

1 个答案:

答案 0 :(得分:1)

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

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

值得探索的两种可能性:

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

  2. 不是在直接查询模式下导入整个表,而是单击“高级选项”选项并使用数据库引擎的内置语言编写一个SQL查询,该查询将以您的方式提取所需的数据想要,在它到达Power BI之前。

  3. Write your own JSON parsing query 在Power BI DirectQuery模式下使用SQL Server 2016内置JSON解析工具的示例

    对于选项#2,您可能需要做出许多限制或妥协。例如,您可能需要将提取的JSON作为源表中其余列的单独表。有100万行限制。可能没有简单的方法可以使用数据库语言以您希望的方式提取数据。 (注意:我自己从未这样做过,所以如果在尝试之后,你有分享的提示或陷阱,请在这里回复)

    关于好处和文件的文件很好。直接查询模式的限制在此处: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)

    希望这有帮助。