--- name: metabase_export_card kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def metabase_export_card(client: MetabaseClient, card_id: int, format: str = 'csv') -> bytes" description: "Exporta los resultados de una card de Metabase en CSV, XLSX o JSON. Endpoint: POST /api/card/:id/query/:format." tags: [metabase, card, export, csv, xlsx, api, python] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [httpx] params: - name: client desc: "instancia autenticada de MetabaseClient" - name: card_id desc: "ID de la card cuyos resultados se exportan" - name: format desc: "formato de exportacion: 'csv', 'xlsx' o 'json'. Default: 'csv'" output: "bytes con el contenido del archivo exportado listo para escribir a disco" tested: false tests: [] test_file_path: "" file_path: "python/functions/metabase/cards.py" --- ## Ejemplo ```python # Exportar a CSV data = metabase_export_card(client, 42, format="csv") with open("export.csv", "wb") as f: f.write(data) # Exportar a Excel data = metabase_export_card(client, 42, format="xlsx") with open("export.xlsx", "wb") as f: f.write(data) # Exportar a JSON import json data = metabase_export_card(client, 42, format="json") rows = json.loads(data) ``` ## Notas Usa `client._http` directamente para acceder al objeto httpx.Client y obtener `.content` en bytes sin que el wrapper de `client.request` intente parsear la respuesta como JSON. Para cards con queries parametrizadas, este endpoint no acepta parametros — ejecuta la query con los valores por defecto. Para pasar parametros, usar `metabase_execute_card` que devuelve JSON estructurado.