如何从Looker Golang SDK调用run_inline_query接口获取返回值
问题定位
- Limit字段类型错误
Looker Go SDK v4的WriteQuery结构体中Limit字段要求是*int64类型,你当前传入的是字符串指针,参数格式不符合API要求,会导致查询参数解析失败,无法返回正确结果。 - 响应打印方式错误
RunInlineQuery方法返回的response是[]byte类型的原始JSON数据,直接调用fmt.Println(response)只会打印字节数组的数值序列,看起来类似空响应,需要转为字符串后再打印。 - 错误处理逻辑不完善
当前代码出现错误后仅打印错误信息,仍会继续执行打印空响应的逻辑,无法及时识别参数错误、权限不足等问题。 - 可选排查点:字段关联问题
你选择的字段同时包含dashboard和dashboard_element两个视图的属性,需要确保system__activity模型下dashboard视图和dashboard_element的关联已正确配置,也可以先简化字段列表做测试,排除字段配置错误的问题。
修正后代码
func getDashboards(sdk *looker.LookerSDK) error { fields := []string{ "dashboard.id", "dashboard.title", // 可先注释掉其他关联字段做测试,验证通了再加 // "dashboard_element.id", // "dashboard_element.type", // "dashboard_element.result_source", // "query.model", // "query.view", // "query.formatted_fields", // "query.id", // "look.id", } // Limit改为int64类型 limit := int64(5000) response, err := sdk.RunInlineQuery( looker.RequestRunInlineQuery{ ResultFormat: "json", Body: looker.WriteQuery{ Model: "system__activity", View: "dashboard", Fields: &fields, Limit: &limit, }, }, nil) if err != nil { fmt.Printf("调用API失败: %v\n", err) return err } // 字节数组转字符串打印 fmt.Println("查询结果:", string(response)) return nil }
额外使用建议
如果需要直接解析结果,可将RunInlineQuery的第二个参数传入对应类型的指针,SDK会自动完成反序列化,示例:
var result []map[string]interface{} _, err := sdk.RunInlineQuery(request, &result) if err == nil { fmt.Printf("共查询到%d条记录\n", len(result)) }
需提前确认SDK初始化时的身份凭证有system__activity模型的访问权限。
内容的提问来源于stack exchange,提问作者hselbie
相关产品推荐
相关产品推荐

