--- name: metabase_execute_card kind: function lang: go domain: infra version: "1.0.0" purity: impure signature: "func MetabaseExecuteCard(client MetabaseClient, cardID int, parameters []map[string]any) (map[string]any, error)" description: "Ejecuta la query de una card/pregunta guardada en Metabase y retorna los resultados. Soporta parametros para queries parametrizadas. Endpoint: POST /api/card/:id/query." tags: [metabase, card, question, execute, query, api, pendiente-usar] uses_functions: [] uses_types: [MetabaseClient_go_infra] returns: [] returns_optional: false error_type: "error_go_core" imports: [fmt] params: - name: client desc: "cliente MetabaseClient autenticado" - name: cardID desc: "ID de la card/pregunta guardada a ejecutar" - name: parameters desc: "slice de maps con parametros para queries parametrizadas (nil si no hay parametros)" output: "mapa con status, row_count, running_time, data.columns, data.rows, data.native_form.query" tested: false tests: [] test_file_path: "" file_path: "functions/infra/metabase_execute_card.go" --- ## Ejemplo ```go // Ejecutar sin parametros result, err := MetabaseExecuteCard(client, 42, nil) if err != nil { log.Fatal(err) } data := result["data"].(map[string]any) rows := data["rows"].([]any) fmt.Printf("Filas: %d\n", len(rows)) // Ejecutar con parametros result, err := MetabaseExecuteCard(client, 42, []map[string]any{ { "type": "category", "target": []any{"variable", []any{"template-tag", "status"}}, "value": "active", }, }) ``` ## Notas ### Estructura de la respuesta | Campo | Tipo | Descripcion | |-------|------|-------------| | status | string | "completed" o "failed" | | row_count | float64 | Numero de filas | | running_time | float64 | Tiempo de ejecucion en ms | | data.columns | []string | Nombres de columnas | | data.rows | [][]any | Filas de datos | | data.cols | []map | Metadata de columnas (name, base_type, display_name) | | data.native_form.query | string | SQL ejecutado | ### Parametros para queries parametrizadas ```go []map[string]any{ { "type": "category", // tipo del parametro "target": []any{"variable", []any{"template-tag", "tag"}}, // referencia al template-tag "value": "valor", // valor a inyectar }, } ``` Limite por defecto: 2000 filas. Para queries ad-hoc sin card, usar MetabaseExecuteQuery.