chore: auto-commit (2 archivos)
- .claude/settings.local.json - scratchpad/mbq.py Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,8 @@
|
||||
"enabledMcpjsonServers": [
|
||||
"registry",
|
||||
"jupyter",
|
||||
"orchestrator"
|
||||
"orchestrator",
|
||||
"godot"
|
||||
],
|
||||
"hooks": {
|
||||
"PreToolUse": [
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
"""Helper: run SQL against Metabase BigQuery db=6 via REST API.
|
||||
|
||||
Usage:
|
||||
python3 mbq.py "SELECT 1"
|
||||
python3 mbq.py < query.sql
|
||||
Reads API key from `pass metabase/aurgi-api-key`.
|
||||
Prints columns header + rows as TSV.
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import json
|
||||
import subprocess
|
||||
|
||||
sys.path.insert(0, "python/functions")
|
||||
from metabase import MetabaseClient, metabase_execute_query
|
||||
|
||||
MB_URL = "https://reports.autingo.es"
|
||||
DB_ID = 6
|
||||
|
||||
|
||||
def get_key():
|
||||
return subprocess.check_output(["pass", "show", "metabase/aurgi-api-key"]).decode().splitlines()[0].strip()
|
||||
|
||||
|
||||
def run(sql, max_results=2000):
|
||||
import httpx
|
||||
c = MetabaseClient(MB_URL, get_key())
|
||||
try:
|
||||
res = metabase_execute_query(c, DB_ID, sql, max_results=max_results)
|
||||
except httpx.HTTPStatusError as e:
|
||||
print("HTTP", e.response.status_code, e.response.text[:3000])
|
||||
return
|
||||
data = res.get("data", {})
|
||||
cols = [col.get("display_name") or col.get("name") for col in data.get("cols", [])]
|
||||
rows = data.get("rows", [])
|
||||
# error?
|
||||
if res.get("error") or (res.get("status") and res.get("status") != "completed"):
|
||||
print("ERROR:", json.dumps(res.get("error") or res, ensure_ascii=False)[:2000])
|
||||
return
|
||||
print("\t".join(str(x) for x in cols))
|
||||
for r in rows:
|
||||
print("\t".join("" if v is None else str(v) for v in r))
|
||||
print(f"-- {len(rows)} rows", file=sys.stderr)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) > 1:
|
||||
sql = sys.argv[1]
|
||||
else:
|
||||
sql = sys.stdin.read()
|
||||
run(sql)
|
||||
Reference in New Issue
Block a user