Power BI R自定义视觉对象报Semantic Query not supported错误求助
字段映射不匹配
你在R代码中调用了dataset$Name、dataset$Group两个字段,但你提供的SQL查询结果里没有对应字段,需要先在Power BI自定义视觉的字段面板中,将你需要作为事件名称、分组的字段(比如DownTime_Desc作为Name、Machine作为Group)绑定到对应字段槽,保证R代码中调用的字段名和Power BI传递的dataset字段名完全一致。如果字段名拼写不匹配,Power BI语义引擎无法生成合法的查询结构,就会抛出Semantic Query not supported报错。非法调用外部连接包
Power BI自定义R视觉运行在沙箱环境中,默认禁止主动发起外部网络/数据库连接,你代码中加载的DBI、odbc两个数据库连接相关包会触发权限校验失败。你不需要在R视觉内重复查询数据库,所用数据直接通过Power BI已经加载好的dataset对象获取即可,删除require(DBI)、require(odbc)两行代码即可解决该问题。日期格式异常
你SQL查询中输出的SDT、EDT是时间类型,需要先在Power BI数据视图中确认这两个字段的类型已经设置为「日期/时间」,如果是文本类型,vistime包解析时会抛出类型错误,向上传递后也会显示为语义查询不支持的报错。
代码优化建议
你原有循环判断颜色的逻辑可以用向量化操作替代,运行效率更高,示例如下:
# 替换原有循环逻辑 col <- dplyr::case_when( dataset$DownTime_Group == "Setup" ~ "green", dataset$DownTime_Group == "Repair" ~ "red", dataset$DownTime_Group == "Other" ~ "blue", TRUE ~ "yellow" )
另外你代码中生成了ggplotly对象p,但保存时传入的是原始vistime对象g,如果需要使用plotly渲染的交互效果,可改为internalSaveWidget(p, 'out.html')。
内容的提问来源于stack exchange,提问作者WaveZee

