PowerBI-API返回空JSON

PowerBI-API返回空JSON,json,powerbi,jira,dax,Json,Powerbi,Jira,Dax,我需要你的支持,请为这 实际上,我正在使用Power BI分析来自JIRA的数据。 我在JIRA中构建了过滤器,并使用API/JSON文件从这些过滤器中获取数据 当JSON包含数据时,它可以正常工作:我将这样做来转换数据: 连接源 Source = Json.Document(Web.Contents("https://jira.xxx.com/jra/rest/api/2/search?startIndex=0&jql=filter=154325&maxResults

我需要你的支持,请为这

实际上,我正在使用Power BI分析来自JIRA的数据。 我在JIRA中构建了过滤器,并使用API/JSON文件从这些过滤器中获取数据

当JSON包含数据时,它可以正常工作:我将这样做来转换数据:

连接源

Source = Json.Document(Web.Contents("https://jira.xxx.com/jra/rest/api/2/search?startIndex=0&jql=filter=154325&maxResults=1000")),
issues = Source[issues],
转换数据

#"Converti en table" = Table.FromList(issues, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"key", "fields"}, {"key", "fields"}),
#"Colonnes renommées" = Table.RenameColumns(#"Column1 développé",{{"key", "jira num"}}),
#"fields développé" = Table.ExpandRecordColumn(#"Colonnes renommées", "fields", {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}, {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}),
#"issuetype développé" = Table.ExpandRecordColumn(#"fields développé", "issuetype", {"name"}, {"name"}),
#"Colonnes renommées1" = Table.RenameColumns(#"issuetype développé",{{"name", "type"}}),
#"project développé" = Table.ExpandRecordColumn(#"Colonnes renommées1", "project", {"name"}, {"name"}),
#"Colonnes renommées2" = Table.RenameColumns(#"project développé",{{"name", "project"}}),
#"priority développé" = Table.ExpandRecordColumn(#"Colonnes renommées2", "priority", {"name"}, {"name"}),
#"Colonnes renommées3" = Table.RenameColumns(#"priority développé",{{"name", "severity"}}),
#"labels développé" = Table.ExpandListColumn(#"Colonnes renommées3", "labels"),
#"issuelinks développé" = Table.ExpandListColumn(#"labels développé", "issuelinks"),
#"issuelinks développé2" = Table.ExpandRecordColumn(#"issuelinks développé", "issuelinks", {"type", "inwardIssue", "outwardIssue"}, {"type.1", "inwardIssue", "outwardIssue"}),
#"type.1 développé" = Table.ExpandRecordColumn(#"issuelinks développé2", "type.1", {"inward", "outward"}, {"inward", "outward"}),
#"inwardIssue développé" = Table.ExpandRecordColumn(#"type.1 développé", "inwardIssue", {"key"}, {"key"}),
#"Colonnes renommées4" = Table.RenameColumns(#"inwardIssue développé",{{"key", "split from"}}),
#"outwardIssue développé" = Table.ExpandRecordColumn(#"Colonnes renommées4", "outwardIssue", {"key"}, {"key"}),
#"Colonnes renommées5" = Table.RenameColumns(#"outwardIssue développé",{{"key", "split to"}}),
#"status développé" = Table.ExpandRecordColumn(#"Colonnes renommées5", "status", {"name"}, {"name"}),
#"Colonnes renommées6" = Table.RenameColumns(#"status développé",{{"name", "status"}}),
#"components développé" = Table.ExpandListColumn(#"Colonnes renommées6", "components"),
#"components développé1" = Table.ExpandRecordColumn(#"components développé", "components", {"name"}, {"name"}),
#"Colonnes renommées7" = Table.RenameColumns(#"components développé1",{{"name", "component"}}),
#"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées7",{"jira num", "type", "project", "severity", "labels", "inward", "split from", "outward", "split to", "status", "component", "summary"}),
#"Colonnes renommées8" = Table.RenameColumns(#"Colonnes permutées",{{"split from", "inwardissue"}, {"split to", "outwardissue"}}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes renommées8", "URL JIRA", each Text.Combine({"https://jira.xxx.com/jra/browse/",[jira num]},"")),
#"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée", each ([labels] = "YYY"))
in
    #"Lignes filtrées"
但是当JSON是空的,因为JIRA过滤器是空的,我会得到这个错误:
Expression.Error:名称«Column1 dédevelope»未知

我认为它来自这一行:

#"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"key", "fields"}, {"key", "fields"}),
我完全理解这个错误,因为JOSN是空的

我的观点是:我想在我的算法中考虑EnMPTY JSON文件,并返回一个带有正确列的空表。 我该怎么做

我想我可以检查变量“issues”是否包含某些内容? 如果是,只需按照上述操作即可 如果不是,则生成一个包含所有所需列的空表,并在不执行转换数据算法的情况下返回它


感谢您的支持,因此我将创建3个查询:
第一次查询使用手动定义的列名创建并清空表:

let
     Source = #table({"first","second","third"}, {{"","",""}})
in
     Source
第二个查询是加载数据源,直到得到完全相同的列名。我猜是这样的:

let
     Source = Json.Document(Web.Contents("https://jira.xxx.com/jra/rest/api/2/search?startIndex=0&jql=filter=154325&maxResults=1000")),
     issues = Source[issues],
     #"Converti en table" = Table.FromList(issues, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in 
     #"Converti en table"
第三个查询将前两个查询追加到一个新查询中(请参见主菜单下的->合并->追加查询)。
注意列名必须匹配。
之后,您可以继续进行转换,您将得到如下结果:

let
    Source = Table.Combine({Query1, Query2}),
    #"Column1 développé" = Table.ExpandRecordColumn(Source, "Column1", {"key", "fields"}, {"key", "fields"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Column1 développé",{{"key", "jira num"}}),
    #"fields développé" = Table.ExpandRecordColumn(#"Colonnes renommées", "fields", {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}, {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}),
    #"issuetype développé" = Table.ExpandRecordColumn(#"fields développé", "issuetype", {"name"}, {"name"}),
    .
    .
    .
    #"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée", each ([labels] = "YYY"))
in
    #"Lignes filtrées"

我非常赞成这个建议。我理解这个想法。我担心的是能够重新创建非常复杂的原始表结构

不可能创建一个只有我知道的最终结构的表吗

消息是,我终于在第一次查询中得到了一个空文件,这样我可以检查结果的总数

我试过这个

let
    Source = Json.Document(Web.Contents("https://jira.xxx.com/jra/rest/api/2/search?startIndex=0&jql=filter=154324&maxResults=1000")),
    issues = Source[issues],
    total = Source[total],
    mytable = #table({"first","second","third"}, {{"","",""}}),
    
    result = if(total <> 0) then 
    {
        #"Converti en table" = Table.FromList(issues, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"key", "fields"}, {"key", "fields"}),
        #"Colonnes renommées" = Table.RenameColumns(#"Column1 développé",{{"key", "jira num"}}),
        #"fields développé" = Table.ExpandRecordColumn(#"Colonnes renommées", "fields", {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}, {"issuetype", "project", "priority", "labels", "issuelinks", "status", "components", "summary"}),
        #"issuetype développé" = Table.ExpandRecordColumn(#"fields développé", "issuetype", {"name"}, {"name"}),
        #"Colonnes renommées1" = Table.RenameColumns(#"issuetype développé",{{"name", "type"}}),
        #"project développé" = Table.ExpandRecordColumn(#"Colonnes renommées1", "project", {"name"}, {"name"}),
        #"Colonnes renommées2" = Table.RenameColumns(#"project développé",{{"name", "project"}}),
        #"priority développé" = Table.ExpandRecordColumn(#"Colonnes renommées2", "priority", {"name"}, {"name"}),
        #"Colonnes renommées3" = Table.RenameColumns(#"priority développé",{{"name", "severity"}}),
        #"labels développé" = Table.ExpandListColumn(#"Colonnes renommées3", "labels"),
        #"issuelinks développé" = Table.ExpandListColumn(#"labels développé", "issuelinks"),
        #"issuelinks développé2" = Table.ExpandRecordColumn(#"issuelinks développé", "issuelinks", {"type", "inwardIssue", "outwardIssue"}, {"type.1", "inwardIssue", "outwardIssue"}),
        #"type.1 développé" = Table.ExpandRecordColumn(#"issuelinks développé2", "type.1", {"inward", "outward"}, {"inward", "outward"}),
        #"inwardIssue développé" = Table.ExpandRecordColumn(#"type.1 développé", "inwardIssue", {"key"}, {"key"}),
        #"Colonnes renommées4" = Table.RenameColumns(#"inwardIssue développé",{{"key", "split from"}}),
        #"outwardIssue développé" = Table.ExpandRecordColumn(#"Colonnes renommées4", "outwardIssue", {"key"}, {"key"}),
        #"Colonnes renommées5" = Table.RenameColumns(#"outwardIssue développé",{{"key", "split to"}}),
        #"status développé" = Table.ExpandRecordColumn(#"Colonnes renommées5", "status", {"name"}, {"name"}),
        #"Colonnes renommées6" = Table.RenameColumns(#"status développé",{{"name", "status"}}),
        #"components développé" = Table.ExpandListColumn(#"Colonnes renommées6", "components"),
        #"components développé1" = Table.ExpandRecordColumn(#"components développé", "components", {"name"}, {"name"}),
        #"Colonnes renommées7" = Table.RenameColumns(#"components développé1",{{"name", "component"}}),
        #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes renommées7",{"jira num", "type", "project", "severity", "labels", "inward", "split from", "outward", "split to", "status", "component", "summary"}),
        #"Colonnes renommées8" = Table.RenameColumns(#"Colonnes permutées",{{"split from", "inwardissue"}, {"split to", "outwardissue"}}),
        #"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes renommées8", "URL JIRA", each Text.Combine({"https://jira.xxx.com/jra/browse/",[jira num]},"")),
        #"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée", each ([labels] = "FilRougeMVP0.5"))
    }
    else
        total = 0
in
    if(total <> 0) 
    then #"Lignes filtrées"
    else mytable
let
Source=Json.Document(Web.Contents(“https://jira.xxx.com/jra/rest/api/2/search?startIndex=0&jql=filter=154324&maxResults=1000")),
问题=来源[问题],
总计=来源[总计],
mytable=#table({“第一”、“第二”、“第三”}、{{{”、“第二”、“第三”}、{,
结果=如果(总数为0),则
{
#“Converti en table”=table.FromList(issues,Splitter.SplitByNothing(),null,null,ExtraValues.Error),
#“Column1 dédeveloppé”=Table.ExpandRecordColumn(#“Converti en Table”、“Column1”、“Column1”、“key”、“fields”}、{“key”、“fields”}),
#“Colonnes renommées”=Table.RenameColumns(#“Column1 dédeveloppé”、“key”、“jira num”}),
#“fields dédeveloppé”=Table.ExpandRecordColumn(#“Colonnes renommées”、“fields”、{“issuetype”、“project”、“priority”、“labels”、“IssueLink”、“status”、“components”、“summary”}、{“issuetype”、“project”、“priority”、“labels”、“IssueLink”、“status”、“components”、“summary”}),
#“issuetype dédeveloppé”=Table.ExpandRecordColumn(#“字段dédeveloppé”、“issuetype”、{“名称”}、{“名称”}),
#“Colonnes renommées1”=Table.RenameColumns(#“issuetype dédevelope”,{{{“name”,“type”}),
#“project dédeveloppé”=Table.ExpandRecordColumn(#“Colonnes renommées1”、“project”、{“name”}、{“name”}),
#“Colonnes renommées2”=Table.RenameColumns(#“项目开发”,{{{“名称”,“项目”}),
#“priority dédeveloppé”=Table.ExpandRecordColumn(#“Colonnes renommées2”、“priority”、{“name”}、{“name”}),
#“Colonnes renommées3”=表.重命名列(#“优先发展”、“名称”、“严重性”}),
#“labels dédeveloppé”=Table.ExpandListColumn(#“Colonnes renommées3”,“labels”),
#“issuelinks dédeveloppé”=Table.ExpandListColumn(#“标签dédeveloppé”、“issuelinks”),
#“issuelinks dédeveloppé2”=Table.ExpandRecordColumn(#“issuelinks dédeveloppé”、“issuelinks”、{“type”、“inwardIssue”、“outwardIssue”}、{“type.1”、“inwardIssue”、“outwardIssue”}),
#“type.1 dédeveloppé”=Table.ExpandRecordColumn(#“issuelinks dédeveloppé2”、“type.1”、{“向内”、“向外”}、{“向内”、“向外”}),
#“InwardDisease dédevelopepé”=Table.ExpandRecordColumn(#“type.1 dédevelopepé”、“InwardDisease”、{key}、{key}),
#“Colonnes renommées4”=表。重命名列(#“内部问题开发”、{{“键”、“从”}拆分),
#“outwardIssue dédeveloppé”=Table.ExpandRecordColumn(#“Colonnes renommées4”、“outwardIssue”、{“key”}、{“key”}),
#“Colonnes renommées5”=表。重命名列(#“outwardIssue dédeveloppé”、{{“key”、“split to”}),
#“status dédeveloppé”=Table.ExpandRecordColumn(#“Colonnes renommées5”、“status”、{“name”}、{“name”}),
#“Colonnes renommées6”=表.重命名列(#“status dédeveloppé”,{{{“name”,“status”}),
#“组件开发”=表.ExpandListColumn(#“Colonnes renommées6”,“组件”),
#“组件开发1”=Table.ExpandRecordColumn(#“组件开发”、“组件”、{“名称”}、{“名称”}),
#“Colonnes renommées7”=Table.RenameColumns(#“components dédeveloppé1”、{{{“name”、“component”}),
#“Colonnes permutées”=表。重新排序列(#“Colonnes renommées7”、{“jira num”、“类型”、“项目”、“严重性”、“标签”、“向内”、“从中拆分”、“向外”、“拆分到”、“状态”、“组件”、“摘要”}),
#“Colonnes renommées8”=表.重命名列(#“Colonnes permutées”,{{{“拆分自”,“向内发行”},{“拆分至”,“向外发行”}),
#“Personnalisée ajoutée”=Table.AddColumn(#“Colonnes renommées8”,“URL JIRA”,每个文本。组合({”https://jira.xxx.com/jra/browse/“,[jira num]},”,
#“alignes filterées”=表格。选择行(#“Personnalisée ajoutée”,每个行([标签]=“fillougemvp0.5”))
}
其他的
总数=0
在里面
若有(总计0)
然后#“对齐过滤器”
else mytable
但是我有一个错误:表达式。错误:lenom«Converti en table
{"startAt":0,"maxResults":1000,"total":0,"issues":[]}