From fbdf80bd7100550fca1483ae16f5e405ba9af86f Mon Sep 17 00:00:00 2001 From: egutierrez Date: Wed, 1 Jul 2026 17:58:03 +0200 Subject: [PATCH] chore: auto-commit (10 archivos) - scratchpad/ap.parquet - scratchpad/bq.py - scratchpad/cards.json - scratchpad/citas_recon.csv - scratchpad/dash.txt - scratchpad/diego.parquet - scratchpad/diego_literals.sql - scratchpad/exf/ - scratchpad/va.parquet - scratchpad/vm.parquet Co-Authored-By: Claude Opus 4.7 (1M context) --- scratchpad/ap.parquet | Bin 0 -> 3773 bytes scratchpad/bq.py | 7 ++ scratchpad/cards.json | 1 + scratchpad/citas_recon.csv | 61 +++++++++++++ scratchpad/dash.txt | 1 + scratchpad/diego.parquet | Bin 0 -> 9023 bytes scratchpad/diego_literals.sql | 60 +++++++++++++ scratchpad/exf/bqq.py | 8 ++ scratchpad/exf/build.py | 152 +++++++++++++++++++++++++++++++++ scratchpad/exf/card_11751.json | 1 + scratchpad/exf/card_11752.json | 1 + scratchpad/exf/card_11857.json | 1 + scratchpad/exf/card_11858.json | 1 + scratchpad/exf/card_4491.json | 1 + scratchpad/exf/card_4493.json | 1 + scratchpad/exf/card_4494.json | 1 + scratchpad/exf/cards.json | 1 + scratchpad/exf/create.py | 42 +++++++++ scratchpad/exf/dash.json | 1 + scratchpad/exf/dash.py | 54 ++++++++++++ scratchpad/va.parquet | Bin 0 -> 3609 bytes scratchpad/vm.parquet | Bin 0 -> 3064 bytes 22 files changed, 395 insertions(+) create mode 100644 scratchpad/ap.parquet create mode 100644 scratchpad/bq.py create mode 100644 scratchpad/cards.json create mode 100644 scratchpad/citas_recon.csv create mode 100644 scratchpad/dash.txt create mode 100644 scratchpad/diego.parquet create mode 100644 scratchpad/diego_literals.sql create mode 100644 scratchpad/exf/bqq.py create mode 100644 scratchpad/exf/build.py create mode 100644 scratchpad/exf/card_11751.json create mode 100644 scratchpad/exf/card_11752.json create mode 100644 scratchpad/exf/card_11857.json create mode 100644 scratchpad/exf/card_11858.json create mode 100644 scratchpad/exf/card_4491.json create mode 100644 scratchpad/exf/card_4493.json create mode 100644 scratchpad/exf/card_4494.json create mode 100644 scratchpad/exf/cards.json create mode 100644 scratchpad/exf/create.py create mode 100644 scratchpad/exf/dash.json create mode 100644 scratchpad/exf/dash.py create mode 100644 scratchpad/va.parquet create mode 100644 scratchpad/vm.parquet diff --git a/scratchpad/ap.parquet b/scratchpad/ap.parquet new file mode 100644 index 0000000000000000000000000000000000000000..e4cbbea4d826b2be8afd478f8448ef79809fcba3 GIT binary patch literal 3773 zcmcgvdu&@*8NW^)$4Qeet#&PYiiYtzE0faAcAPezQt4bfeq7ISW4E!d-A8<{ePdte z`r6pnv7Izi2Sb1=hNfv+qzyFoC@LCL;SZ>)4OM9H$Nqq+fL1_=q6%$eLX06mfIxib zT-&wlv;t}3DCgXBzVkhP-{X8%mYKMd*3(w{U<5wY0g9Sjcz=W<rs(@=+YFtd zCusw1m@*qXH)dmp*F;V4LfyX~6x}mF1Zzg8Gf`&UeK5h$RUO@o&}L#Vqt{WRI%;Ti zL{IIRFj9J$!!QjnM_?LZj>6nKVO$v3kWpjpFF-@|VlT7~huNrW^I&L$R07Rq}51l`O>d%<Q@X$A3G1^Jp4fz8}nFQs^gee03{@esk>0&nbx88ABWM_z2Mrl7#e%`<;u~wL+FQ~q~P=; zEd9=BgUF&!>^pQIfWW5j!;n+U6+3q(xIe51BHi>pIg7ojqhX{%`NqGK2d7J%lTJ5Yan*xVo$ z5_ETSW9|59fhCsyI%4|eh<#_=zJpudVAAhc3U{_-y0Xudu^Ualp8z;!1Ee&^*UaY) zTQ*6_iOtn)S+19qn(a~R$t~MD&|qh)@=9K`%~)*;UlM_!)MXh?HI=WbaCDG;xdL1F zJlTtQ@7z8O2TkEB(Jr?2_N!TwL^-$GPt$O%s;vsPXR9kxww%)-)Jv6C_oAj&F|LxR z@;P4Rfp^O$D!?l#c`UecB5-Klw%voIAA${6JJ!$#qD#FEhNP&6-6RfuAiCrp7&t`R zGk~V;myNuoK}%ioCur){QysL|fAO%h50HGLdpgL6(H*r>6-aEVVQYUzNdo=Q4p%qJ*` zn&1OHiWhK!ZKuZ}a$a)BDv3IujBccZD-yO1ylOTiujN8=gXr~zH*+CYyGte3oWx)rCsRVc&(PC^j%p?bE5L3w4Ei5JHhM>gDn!a=; zooudiu1?+{CP_~{7t9lV*_JRbY)4FZDrrq_Ag81zILN0WuklIE*Z&7Lh;5N`)krLM$s5#Xbd7HjUmGcS4=FC% zTT3M&=qcPScj;1dBgNf4UfP=oIC7zIC8Z=BX^yQ zQX5d)un%wKG>on^7vAI{zodSPtRqrn>Px;btl7H1*74=j>$)gqp&u*5Ak(`X|G*>m7EBOusyI zN^cCnU|d7>v+@qw&(A^Jn)y%QS9FA@J5xX-o+cE3F+v$eukKT{Xg iL)l8@5c%P-wtpC`+E0chGDT6{KWbqwMJ>ZWuKxi7upNT{ literal 0 HcmV?d00001 diff --git a/scratchpad/bq.py b/scratchpad/bq.py new file mode 100644 index 00000000..62de2d01 --- /dev/null +++ b/scratchpad/bq.py @@ -0,0 +1,7 @@ +import google.auth +from google.cloud import bigquery +_creds, _ = google.auth.default(scopes=['https://www.googleapis.com/auth/bigquery']) +_creds = _creds.with_quota_project(None) +client = bigquery.Client(project='autingo-159109', location='europe-west1', credentials=_creds) +def q(sql): + return client.query(sql).result().to_dataframe() diff --git a/scratchpad/cards.json b/scratchpad/cards.json new file mode 100644 index 00000000..77327412 --- /dev/null +++ b/scratchpad/cards.json @@ -0,0 +1 @@ +{"c1": 12363, "c2": 12364, "c3": 12365} \ No newline at end of file diff --git a/scratchpad/citas_recon.csv b/scratchpad/citas_recon.csv new file mode 100644 index 00000000..488ece8a --- /dev/null +++ b/scratchpad/citas_recon.csv @@ -0,0 +1,61 @@ +ensena,year,mes,diego,bq_neto,match +Aurgi,2023,feb,80.52,, +Aurgi,2023,mar,89.94,, +Aurgi,2023,abr,76.87,, +Aurgi,2023,may,87.95,, +Aurgi,2023,jun,97.84,, +Aurgi,2023,jul,138.24,, +Aurgi,2023,ago,89.7,, +Aurgi,2023,sep,61.53,, +Aurgi,2023,oct,56.48,, +Aurgi,2023,nov,73.2,, +Aurgi,2023,dic,78.81,, +Aurgi,2024,ene,75.34,75.35,100.0 +Aurgi,2024,feb,60.21,60.21,100.0 +Aurgi,2024,mar,70.62,71.26,99.1 +Aurgi,2024,abr,70.46,70.46,100.0 +Aurgi,2024,may,84.76,84.76,100.0 +Aurgi,2024,jun,108.7,108.7,100.0 +Aurgi,2024,jul,141.2,141.2,100.0 +Aurgi,2024,ago,100.18,100.18,100.0 +Aurgi,2024,sep,67.91,67.91,100.0 +Aurgi,2024,oct,81.31,81.31,100.0 +Aurgi,2024,nov,71.57,71.57,100.0 +Aurgi,2024,dic,74.33,74.33,100.0 +Aurgi,2025,ene,86.28,86.28,100.0 +Aurgi,2025,feb,53.05,53.05,100.0 +Aurgi,2025,mar,86.75,86.75,100.0 +Aurgi,2025,abr,83.89,83.89,100.0 +Aurgi,2025,may,84.24,84.24,100.0 +Aurgi,2025,jun,134.46,134.46,100.0 +Aurgi,2025,jul,101.17,174.32,58.0 +MT,2023,feb,30.19,, +MT,2023,mar,41.89,, +MT,2023,abr,36.16,, +MT,2023,may,42.01,, +MT,2023,jun,44.24,, +MT,2023,jul,63.61,, +MT,2023,ago,40.7,, +MT,2023,sep,28.6,, +MT,2023,oct,28.79,, +MT,2023,nov,30.3,, +MT,2023,dic,35.21,, +MT,2024,ene,38.13,38.13,100.0 +MT,2024,feb,32.44,32.44,100.0 +MT,2024,mar,35.17,35.18,100.0 +MT,2024,abr,35.38,35.38,100.0 +MT,2024,may,37.58,37.58,100.0 +MT,2024,jun,44.54,44.54,100.0 +MT,2024,jul,58.92,58.92,100.0 +MT,2024,ago,40.97,40.98,100.0 +MT,2024,sep,35.03,35.03,100.0 +MT,2024,oct,38.86,38.86,100.0 +MT,2024,nov,36.48,36.48,100.0 +MT,2024,dic,40.52,40.52,100.0 +MT,2025,ene,39.16,39.16,100.0 +MT,2025,feb,28.16,28.16,100.0 +MT,2025,mar,42.26,42.26,100.0 +MT,2025,abr,44.04,44.04,100.0 +MT,2025,may,52.71,52.71,100.0 +MT,2025,jun,63.54,63.54,100.0 +MT,2025,jul,49.47,84.94,58.2 diff --git a/scratchpad/dash.txt b/scratchpad/dash.txt new file mode 100644 index 00000000..8886737e --- /dev/null +++ b/scratchpad/dash.txt @@ -0,0 +1 @@ +https://reports.autingo.es/dashboard/1142 \ No newline at end of file diff --git a/scratchpad/diego.parquet b/scratchpad/diego.parquet new file mode 100644 index 0000000000000000000000000000000000000000..e73a37b65dcd9896abcc2c5026d660a48a109b72 GIT binary patch literal 9023 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 service_request (canal + charged), tal cual 1094 card 11751. +BASE = r""" +WITH vf AS ( + SELECT document_id, LOGICAL_OR(is_pw) is_pw FROM ( + SELECT CAST(document_id AS STRING) document_id, ANY_VALUE(is_precaweb) is_pw + FROM `autingo-159109.anjana_bi_datamart.VENTAS_aurgi` GROUP BY 1 + UNION ALL + SELECT CAST(document_id AS STRING), ANY_VALUE(is_precaweb) + FROM `autingo-159109.anjana_bi_datamart.VENTAS_Motortown` GROUP BY 1 + ) GROUP BY 1 +), +lineas AS ( + SELECT + CAST(s.numeroDocumento AS STRING) AS numdoc, + CAST(s.idCentro AS STRING) AS idcentro, + DATE(s.Fecha) AS fecha, + s.Base_imponible_linea AS bil + FROM {{#4494}} s + WHERE DATE(s.Fecha) >= DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY) + [[AND DATE(s.Fecha) >= {{fecha_desde}}]] + [[AND DATE(s.Fecha) <= {{fecha_hasta}}]] +), +web AS ( + SELECT l.numdoc, l.fecha, l.bil, oc.name AS centro, oc.Companies__name AS ambito + FROM lineas l + LEFT JOIN vf ON l.numdoc = vf.document_id + LEFT JOIN `autingo-159109.rag_datasets.Objeto_Centros` oc + ON l.idcentro = CAST(oc.nav_id AS STRING) + WHERE (COALESCE(vf.is_pw, FALSE) OR oc.name IN ('Aurgi Web','MT Web')) + AND (oc.Companies__name IS NULL OR oc.Companies__name NOT IN ('Aurgi Glass','MotorTown Glass')) + [[AND oc.name IN ({{centro}})]] + [[AND oc.Companies__name IN ({{ensena}})]] +), +sr_link AS ( + SELECT CAST(inv.nav_id AS STRING) numdoc, CAST(j.service_request_id AS STRING) sr_id + FROM `autingo-159109.psql_dcpublic.tpv_orders_invoice` inv + JOIN `autingo-159109.psql_dcpublic.tpv_precawebs_servicerequestjob` j ON j.order_id = inv.order_id + WHERE inv.nav_id IS NOT NULL + UNION DISTINCT + SELECT CAST(invoice_number AS STRING), CAST(service_request_id AS STRING) + FROM `autingo-159109.psql_dcpublic.logistic_orders` + WHERE invoice_number IS NOT NULL AND invoice_number != '' +), +sr_link1 AS (SELECT numdoc, MIN(sr_id) sr_id FROM sr_link GROUP BY 1), +sr AS ( + SELECT CAST(id AS STRING) sr_id, channel_id, charged + FROM `autingo-159109.psql_dcpublic.service_requests` +), +doc AS ( + SELECT + w.numdoc, + ANY_VALUE(w.fecha) AS fecha, + SUM(w.bil) AS venta, + ANY_VALUE(sl.sr_id) AS sr_id, + ANY_VALUE(sr.channel_id) AS channel_id, + ANY_VALUE(sr.charged) AS charged + FROM web w + LEFT JOIN sr_link1 sl USING (numdoc) + LEFT JOIN sr ON sr.sr_id = sl.sr_id + GROUP BY w.numdoc +), +fin AS ( + SELECT + numdoc, fecha, venta, + CASE WHEN sr_id IS NULL THEN 'Sin solicitud' + WHEN channel_id = 1 THEN 'aurgi.com' + WHEN channel_id = 2 THEN 'motortown.es' + WHEN channel_id = 3 THEN 'Autingo' + WHEN channel_id IN (11,13,14,15,6,8) THEN 'Marketplaces' + WHEN channel_id = 10 THEN 'Talleres Digitales' + ELSE 'Otros' END AS canal, + CASE WHEN sr_id IS NULL THEN 'Sin solicitud' + WHEN charged THEN 'Pago web' + ELSE 'Pago tienda' END AS forma_pago + FROM doc +) +""" + +CARDS = { + "total": { + "name": "Venta web total (facturacion NAV / modelo 4494)", + "sql": BASE + "SELECT ROUND(SUM(venta),0) AS venta_web_eur, COUNT(DISTINCT numdoc) AS documentos FROM fin", + "display": "scalar", + }, + "canal": { + "name": "Venta web por canal", + "sql": BASE + "SELECT canal, ROUND(SUM(venta),0) AS venta_eur, COUNT(DISTINCT numdoc) AS documentos FROM fin GROUP BY canal ORDER BY venta_eur DESC", + "display": "bar", + }, + "pago": { + "name": "Venta web por forma de pago", + "sql": BASE + "SELECT forma_pago, ROUND(SUM(venta),0) AS venta_eur, COUNT(DISTINCT numdoc) AS documentos FROM fin GROUP BY forma_pago ORDER BY venta_eur DESC", + "display": "row", + }, + "matriz": { + "name": "Venta web: matriz canal x forma de pago", + "sql": BASE + "SELECT canal, forma_pago, ROUND(SUM(venta),0) AS venta_eur, COUNT(DISTINCT numdoc) AS documentos FROM fin GROUP BY canal, forma_pago ORDER BY venta_eur DESC", + "display": "table", + }, + "evolutivo": { + "name": "Venta web mensual por canal", + "sql": BASE + "SELECT DATE_TRUNC(fecha, MONTH) AS mes, canal, ROUND(SUM(venta),0) AS venta_eur FROM fin GROUP BY mes, canal ORDER BY mes, venta_eur DESC", + "display": "bar", + }, +} + +TAGS = { + "#4494": {"type":"card","name":"#4494","id":"card__4494","display-name":"#4494","card-id":4494}, + "fecha_desde": {"type":"date","name":"fecha_desde","id":"tag-fecha-desde","display-name":"Fecha desde"}, + "fecha_hasta": {"type":"date","name":"fecha_hasta","id":"tag-fecha-hasta","display-name":"Fecha hasta"}, + "centro": {"type":"text","name":"centro","id":"tag-centro","display-name":"Centro"}, + "ensena": {"type":"text","name":"ensena","id":"tag-ensena","display-name":"Ensena"}, +} + +def dq(sql): + return {"type":"native","database":6,"native":{"query":sql,"template-tags":TAGS}} + +def test_query(sql, params=None): + body = dq(sql) + body["parameters"] = params or [] + r = api("POST", "/api/dataset", body) + if r.get("error"): + print("QUERY ERROR:", r.get("error")); return None + cols = [c["name"] for c in r["data"]["cols"]] + rows = r["data"]["rows"] + return cols, rows + +if __name__ == "__main__": + which = sys.argv[1] if len(sys.argv) > 1 else "all" + # param YTD 2026 para verificar reconciliacion + p_ytd = [{"type":"date/single","value":"2026-01-01","target":["variable",["template-tag","fecha_desde"]]}] + for k, c in CARDS.items(): + if which != "all" and which != k: continue + print(f"\n===== TEST {k}: {c['name']} =====") + res = test_query(c["sql"], p_ytd) + if res: + cols, rows = res + print("cols:", cols) + for row in rows[:15]: print(" ", row) diff --git a/scratchpad/exf/card_11751.json b/scratchpad/exf/card_11751.json new file mode 100644 index 00000000..7dddbb70 --- /dev/null +++ b/scratchpad/exf/card_11751.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-06-17T10:07:56.226564Z","description":null,"archived":false,"view_count":208,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"lib/deduplicated-name":"categoria","lib/original-name":"categoria","name":"categoria","lib/source":"source/native","lib/source-column-alias":"categoria","source":"native","field_ref":["field","categoria",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"categoria","display_name":"categoria","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Text":{"percent-json":0.0,"percent-url":0.0,"percent-email":0.0,"percent-state":0.0,"average-length":9.0}}},"base_type":"type/Text"},{"semantic_type":null,"lib/deduplicated-name":"venta_eur","lib/original-name":"venta_eur","name":"venta_eur","lib/source":"source/native","lib/source-column-alias":"venta_eur","source":"native","field_ref":["field","venta_eur",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"venta_eur","display_name":"venta_eur","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":307659.0,"q1":307659.0,"q3":307659.0,"max":307659.0,"sd":null,"avg":307659.0}}},"base_type":"type/Decimal"},{"semantic_type":null,"lib/deduplicated-name":"pedidos","lib/original-name":"pedidos","name":"pedidos","lib/source":"source/native","lib/source-column-alias":"pedidos","source":"native","field_ref":["field","pedidos",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"pedidos","display_name":"pedidos","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":2512.0,"q1":2512.0,"q3":2512.0,"max":2512.0,"sd":null,"avg":2512.0}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"pct_online","lib/original-name":"pct_online","name":"pct_online","lib/source":"source/native","lib/source-column-alias":"pct_online","source":"native","field_ref":["field","pct_online",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"pct_online","display_name":"pct_online","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":1.0,"q1":1.0,"q3":1.0,"max":1.0,"sd":null,"avg":1.0}}},"base_type":"type/Decimal"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","is_data_analyst":false,"last_login":null,"is_qbnewb":true,"is_superuser":false,"id":301,"last_name":"","tenant_id":null,"date_joined":"2025-09-15T09:45:46.250461Z","common_name":"data_exploration"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":583,"query_type":"native","name":"Venta online por canal de origen","last_query_start":"2026-07-01T15:23:53.070693Z","is_remote_synced":false,"dashboard_count":1,"document_id":null,"last_used_at":"2026-07-01T15:23:53.442369Z","dashboard":null,"type":"question","average_query_time":10844.033519553073,"creator_id":301,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-06-17T10:08:07.916135Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":360,"dataset_query":{"lib/type":"mbql/query","database":6,"stages":[{"template-tags":{"fecha":{"widget-type":"date/range","type":"dimension","name":"fecha","display-name":"Fecha","dimension":["field",{"base-type":"type/DateTime","lib/uuid":"18cf1fcd-1dd8-40de-8ff6-009a77db7028"},109464],"id":"ffff0001-1094-4f00-aaaa-000000000001"},"centro":{"widget-type":"string/=","type":"dimension","name":"centro","display-name":"Centro","dimension":["field",{"base-type":"type/Text","lib/uuid":"2285effb-800b-4c33-9fec-20bca683e188"},278633],"id":"ffff0002-1094-4f00-aaaa-000000000002"},"ensena":{"widget-type":"string/=","type":"dimension","name":"ensena","display-name":"Ensena","dimension":["field",{"base-type":"type/Text","lib/uuid":"a5c35a46-8940-42e3-9bff-73431604ae52"},278634],"id":"ffff0003-1094-4f00-aaaa-000000000003"}},"lib/type":"mbql.stage/native","native":"WITH vf AS (\n SELECT document_id, LOGICAL_OR(is_pw) is_pw FROM (\n SELECT CAST(document_id AS STRING) document_id, ANY_VALUE(is_precaweb) is_pw\n FROM `autingo-159109.anjana_bi_datamart.VENTAS_aurgi` GROUP BY 1\n UNION ALL\n SELECT CAST(document_id AS STRING), ANY_VALUE(is_precaweb)\n FROM `autingo-159109.anjana_bi_datamart.VENTAS_Motortown` GROUP BY 1\n ) GROUP BY 1\n),\nbase AS (\n SELECT\n CAST(`anjana_bi_datamart.Cubo_Ventas_Calculado`.numeroDocumento AS STRING) AS numdoc,\n `rag_datasets.Objeto_Centros`.name AS centro,\n `rag_datasets.Objeto_Centros`.Companies__name AS ambito,\n `anjana_bi_datamart.Cubo_Ventas_Calculado`.PrecioVenta AS pv,\n (COALESCE(vf.is_pw, FALSE) OR `rag_datasets.Objeto_Centros`.name IN ('Aurgi Web','MT Web')) AS is_web_line\n FROM `autingo-159109.anjana_bi_datamart.Cubo_Ventas_Calculado` `anjana_bi_datamart.Cubo_Ventas_Calculado`\n LEFT JOIN vf ON CAST(`anjana_bi_datamart.Cubo_Ventas_Calculado`.numeroDocumento AS STRING) = vf.document_id\n LEFT JOIN `autingo-159109.rag_datasets.Objeto_Centros` `rag_datasets.Objeto_Centros`\n ON `anjana_bi_datamart.Cubo_Ventas_Calculado`.idCentro = `rag_datasets.Objeto_Centros`.nav_id\n WHERE `anjana_bi_datamart.Cubo_Ventas_Calculado`.Dim_NombreTipoMov = 'Venta'\n AND `anjana_bi_datamart.Cubo_Ventas_Calculado`.idCentro NOT IN ('300','301','302','303','304','305','306','307','308','309','310','311','312','314','315','317','318','321','322','323','324','325','326','327','328','329','332','333','335','336','339','340','350','360','361')\n AND (`rag_datasets.Objeto_Centros`.Companies__name IS NULL OR `rag_datasets.Objeto_Centros`.Companies__name NOT IN ('Aurgi Glass','MotorTown Glass'))\n AND `anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha >= DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY)\n [[AND {{fecha}}]]\n [[AND {{centro}}]]\n [[AND {{ensena}}]]\n),\ndoc_web AS (\n SELECT numdoc, ANY_VALUE(centro) centro, ANY_VALUE(ambito) ambito, SUM(pv) venta\n FROM base WHERE is_web_line GROUP BY numdoc\n),\nsr_link AS (\n SELECT CAST(inv.nav_id AS STRING) numdoc, CAST(j.service_request_id AS STRING) sr_id\n FROM `autingo-159109.psql_dcpublic.tpv_orders_invoice` inv\n JOIN `autingo-159109.psql_dcpublic.tpv_precawebs_servicerequestjob` j ON j.order_id = inv.order_id\n WHERE inv.nav_id IS NOT NULL\n UNION DISTINCT\n SELECT CAST(invoice_number AS STRING), CAST(service_request_id AS STRING)\n FROM `autingo-159109.psql_dcpublic.logistic_orders`\n WHERE invoice_number IS NOT NULL AND invoice_number != ''\n),\nsr_link1 AS (SELECT numdoc, MIN(sr_id) sr_id FROM sr_link GROUP BY 1), -- MIN = desempate determinista (doc multi-SR)\nsr_dims AS (\n SELECT CAST(id AS STRING) sr_id,\n CASE WHEN channel_id=1 THEN 'aurgi.com' WHEN channel_id=2 THEN 'motortown.es'\n WHEN channel_id=3 THEN 'Autingo' WHEN channel_id IN (11,13,14,15,6,8) THEN 'Marketplaces'\n WHEN channel_id=10 THEN 'Talleres Digitales' ELSE 'Otros' END AS canal,\n CASE shipping_method WHEN 1 THEN 'Ir a centro (cita)' WHEN 2 THEN 'Envio a domicilio'\n WHEN 0 THEN 'Click & Collect' WHEN 3 THEN 'Servicio digital' ELSE 'Sin definir' END AS modalidad,\n CASE WHEN center_id=160 THEN 'Aurgi Web' WHEN center_id=161 THEN 'MT Web'\n WHEN center_id=167 THEN 'Autingo (virtual)' WHEN center_id=183 THEN 'Aurgi Asociados Gruas'\n WHEN center_id=184 THEN 'Aurgi Asociados' WHEN center_id IS NULL THEN 'Sin centro'\n ELSE 'Centro fisico' END AS centro_tipo,\n CASE state WHEN 'finished_state' THEN 'Finalizado' WHEN 'cancelled_state' THEN 'Cancelado'\n WHEN 'confirmed_state' THEN 'Confirmado' WHEN 'active_state' THEN 'Activo'\n WHEN 'reserved_state' THEN 'Reservado' WHEN 'no_show_state' THEN 'No show' ELSE 'Otro' END AS estado\n FROM `autingo-159109.psql_dcpublic.service_requests`\n),\nj AS (\n SELECT d.numdoc, d.centro, d.ambito, d.venta,\n COALESCE(s.canal,'Sin solicitud') AS canal,\n COALESCE(s.modalidad,'Sin solicitud') AS modalidad,\n COALESCE(s.centro_tipo,'Sin solicitud') AS centro_tipo,\n COALESCE(s.estado,'Sin solicitud') AS estado\n FROM doc_web d\n LEFT JOIN sr_link1 sl USING (numdoc)\n LEFT JOIN sr_dims s ON s.sr_id = sl.sr_id\n),\ncen AS (\n -- por centro: total neto vs neto de docs CON solicitud\n SELECT centro, SUM(venta) total_net, SUM(IF(canal='Sin solicitud',0,venta)) sr_net\n FROM j GROUP BY centro\n),\njadj AS (\n -- reparto: el neto 'Sin solicitud' (devoluciones web sin SR) se absorbe\n -- reescalando los docs CON-SR al mix real canal/modalidad/centro/estado de cada centro.\n -- factor = total_net/sr_net (<=1 cuando hay devoluciones). Sankey queda TODO positivo.\n SELECT j.numdoc, j.centro, j.canal, j.modalidad, j.centro_tipo, j.estado,\n CASE WHEN c.sr_net > 0 THEN j.venta * SAFE_DIVIDE(c.total_net, c.sr_net) ELSE j.venta END AS venta\n FROM j JOIN cen c USING (centro)\n WHERE (c.sr_net > 0 AND j.canal != 'Sin solicitud') OR (c.sr_net <= 0)\n)\nSELECT canal AS categoria,\n ROUND(SUM(venta),0) AS venta_eur,\n COUNT(DISTINCT numdoc) AS pedidos,\n SAFE_DIVIDE(SUM(venta), SUM(SUM(venta)) OVER()) AS pct_online\nFROM jadj GROUP BY 1 ORDER BY 2 DESC"}]},"id":11751,"legacy_query":null,"parameter_mappings":[],"can_manage_db":false,"display":"table","archived_directly":false,"entity_id":"DMX953yN5iDh_PLI6pwaY","collection_preview":true,"last-edit-info":{"id":301,"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","last_name":"","timestamp":"2026-06-17T10:07:56.390157Z"},"visualization_settings":{"table.column_widths":[],"column_settings":{"[\"name\",\"categoria\"]":{"column_title":"Canal"},"[\"name\",\"venta_eur\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0,"column_title":"Venta online (EUR)"},"[\"name\",\"pedidos\"]":{"column_title":"Pedidos"},"[\"name\",\"pct_online\"]":{"number_style":"percent","decimals":1,"column_title":"% del online"}}},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"claude","archive_operation_id":null,"name":"Claude","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":583,"archived_directly":null,"entity_id":"QjYHPvxn1zX2HY5U4QELT","location":"/","namespace":null,"is_personal":false,"created_at":"2026-03-17T15:46:05.729991Z"},"metabase_version":"v0.59.4 (d4fb593)","parameters":[],"dashboard_id":null,"created_at":"2026-06-16T12:02:13.774527Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_11752.json b/scratchpad/exf/card_11752.json new file mode 100644 index 00000000..8e5e2c01 --- /dev/null +++ b/scratchpad/exf/card_11752.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-06-17T10:07:59.487863Z","description":null,"archived":false,"view_count":202,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"lib/deduplicated-name":"categoria","lib/original-name":"categoria","name":"categoria","lib/source":"source/native","lib/source-column-alias":"categoria","source":"native","field_ref":["field","categoria",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"categoria","display_name":"categoria","fingerprint":{"global":{"distinct-count":3,"nil%":0.0},"type":{"type/Text":{"percent-json":0.0,"percent-url":0.0,"percent-email":0.0,"percent-state":0.0,"average-length":16.666666666666668}}},"base_type":"type/Text"},{"semantic_type":null,"lib/deduplicated-name":"venta_eur","lib/original-name":"venta_eur","name":"venta_eur","lib/source":"source/native","lib/source-column-alias":"venta_eur","source":"native","field_ref":["field","venta_eur",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"venta_eur","display_name":"venta_eur","fingerprint":{"global":{"distinct-count":3,"nil%":0.0},"type":{"type/Number":{"min":184.0,"q1":1149.75,"q3":228582.75,"max":303428.0,"sd":173973.57532395545,"avg":102553.0}}},"base_type":"type/Decimal"},{"semantic_type":null,"lib/deduplicated-name":"pedidos","lib/original-name":"pedidos","name":"pedidos","lib/source":"source/native","lib/source-column-alias":"pedidos","source":"native","field_ref":["field","pedidos",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"pedidos","display_name":"pedidos","fingerprint":{"global":{"distinct-count":3,"nil%":0.0},"type":{"type/Number":{"min":3.0,"q1":18.0,"q3":1850.25,"max":2446.0,"sd":1393.4691720068058,"avg":837.3333333333334}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"pct_online","lib/original-name":"pct_online","name":"pct_online","lib/source":"source/native","lib/source-column-alias":"pct_online","source":"native","field_ref":["field","pct_online",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"pct_online","display_name":"pct_online","fingerprint":{"global":{"distinct-count":3,"nil%":0.0},"type":{"type/Number":{"min":5.966436657573052E-4,"q1":0.003736282329168104,"q3":0.7429749180909818,"max":0.9862481580148422,"sd":0.5654756896104476,"avg":0.3333333333333333}}},"base_type":"type/Decimal"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","is_data_analyst":false,"last_login":null,"is_qbnewb":true,"is_superuser":false,"id":301,"last_name":"","tenant_id":null,"date_joined":"2025-09-15T09:45:46.250461Z","common_name":"data_exploration"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":583,"query_type":"native","name":"Venta online por modalidad de entrega","last_query_start":"2026-07-01T15:23:53.156232Z","is_remote_synced":false,"dashboard_count":1,"document_id":null,"last_used_at":"2026-07-01T15:23:53.442369Z","dashboard":null,"type":"question","average_query_time":10874.045977011494,"creator_id":301,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-06-17T10:08:11.06597Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":360,"dataset_query":{"lib/type":"mbql/query","database":6,"stages":[{"template-tags":{"fecha":{"widget-type":"date/range","type":"dimension","name":"fecha","display-name":"Fecha","dimension":["field",{"base-type":"type/DateTime","lib/uuid":"825a5e4b-f68e-4c7a-a601-24bcaaf9fb83"},109464],"id":"ffff0001-1094-4f00-aaaa-000000000001"},"centro":{"widget-type":"string/=","type":"dimension","name":"centro","display-name":"Centro","dimension":["field",{"base-type":"type/Text","lib/uuid":"89ab9e25-064a-423a-9c0b-a59842e4eaa8"},278633],"id":"ffff0002-1094-4f00-aaaa-000000000002"},"ensena":{"widget-type":"string/=","type":"dimension","name":"ensena","display-name":"Ensena","dimension":["field",{"base-type":"type/Text","lib/uuid":"ce8f0f37-2424-4fec-8ba0-0f29c878337c"},278634],"id":"ffff0003-1094-4f00-aaaa-000000000003"}},"lib/type":"mbql.stage/native","native":"WITH vf AS (\n SELECT document_id, LOGICAL_OR(is_pw) is_pw FROM (\n SELECT CAST(document_id AS STRING) document_id, ANY_VALUE(is_precaweb) is_pw\n FROM `autingo-159109.anjana_bi_datamart.VENTAS_aurgi` GROUP BY 1\n UNION ALL\n SELECT CAST(document_id AS STRING), ANY_VALUE(is_precaweb)\n FROM `autingo-159109.anjana_bi_datamart.VENTAS_Motortown` GROUP BY 1\n ) GROUP BY 1\n),\nbase AS (\n SELECT\n CAST(`anjana_bi_datamart.Cubo_Ventas_Calculado`.numeroDocumento AS STRING) AS numdoc,\n `rag_datasets.Objeto_Centros`.name AS centro,\n `rag_datasets.Objeto_Centros`.Companies__name AS ambito,\n `anjana_bi_datamart.Cubo_Ventas_Calculado`.PrecioVenta AS pv,\n (COALESCE(vf.is_pw, FALSE) OR `rag_datasets.Objeto_Centros`.name IN ('Aurgi Web','MT Web')) AS is_web_line\n FROM `autingo-159109.anjana_bi_datamart.Cubo_Ventas_Calculado` `anjana_bi_datamart.Cubo_Ventas_Calculado`\n LEFT JOIN vf ON CAST(`anjana_bi_datamart.Cubo_Ventas_Calculado`.numeroDocumento AS STRING) = vf.document_id\n LEFT JOIN `autingo-159109.rag_datasets.Objeto_Centros` `rag_datasets.Objeto_Centros`\n ON `anjana_bi_datamart.Cubo_Ventas_Calculado`.idCentro = `rag_datasets.Objeto_Centros`.nav_id\n WHERE `anjana_bi_datamart.Cubo_Ventas_Calculado`.Dim_NombreTipoMov = 'Venta'\n AND `anjana_bi_datamart.Cubo_Ventas_Calculado`.idCentro NOT IN ('300','301','302','303','304','305','306','307','308','309','310','311','312','314','315','317','318','321','322','323','324','325','326','327','328','329','332','333','335','336','339','340','350','360','361')\n AND (`rag_datasets.Objeto_Centros`.Companies__name IS NULL OR `rag_datasets.Objeto_Centros`.Companies__name NOT IN ('Aurgi Glass','MotorTown Glass'))\n AND `anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha >= DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY)\n [[AND {{fecha}}]]\n [[AND {{centro}}]]\n [[AND {{ensena}}]]\n),\ndoc_web AS (\n SELECT numdoc, ANY_VALUE(centro) centro, ANY_VALUE(ambito) ambito, SUM(pv) venta\n FROM base WHERE is_web_line GROUP BY numdoc\n),\nsr_link AS (\n SELECT CAST(inv.nav_id AS STRING) numdoc, CAST(j.service_request_id AS STRING) sr_id\n FROM `autingo-159109.psql_dcpublic.tpv_orders_invoice` inv\n JOIN `autingo-159109.psql_dcpublic.tpv_precawebs_servicerequestjob` j ON j.order_id = inv.order_id\n WHERE inv.nav_id IS NOT NULL\n UNION DISTINCT\n SELECT CAST(invoice_number AS STRING), CAST(service_request_id AS STRING)\n FROM `autingo-159109.psql_dcpublic.logistic_orders`\n WHERE invoice_number IS NOT NULL AND invoice_number != ''\n),\nsr_link1 AS (SELECT numdoc, MIN(sr_id) sr_id FROM sr_link GROUP BY 1), -- MIN = desempate determinista (doc multi-SR)\nsr_dims AS (\n SELECT CAST(id AS STRING) sr_id,\n CASE WHEN channel_id=1 THEN 'aurgi.com' WHEN channel_id=2 THEN 'motortown.es'\n WHEN channel_id=3 THEN 'Autingo' WHEN channel_id IN (11,13,14,15,6,8) THEN 'Marketplaces'\n WHEN channel_id=10 THEN 'Talleres Digitales' ELSE 'Otros' END AS canal,\n CASE shipping_method WHEN 1 THEN 'Ir a centro (cita)' WHEN 2 THEN 'Envio a domicilio'\n WHEN 0 THEN 'Click & Collect' WHEN 3 THEN 'Servicio digital' ELSE 'Sin definir' END AS modalidad,\n CASE WHEN center_id=160 THEN 'Aurgi Web' WHEN center_id=161 THEN 'MT Web'\n WHEN center_id=167 THEN 'Autingo (virtual)' WHEN center_id=183 THEN 'Aurgi Asociados Gruas'\n WHEN center_id=184 THEN 'Aurgi Asociados' WHEN center_id IS NULL THEN 'Sin centro'\n ELSE 'Centro fisico' END AS centro_tipo,\n CASE state WHEN 'finished_state' THEN 'Finalizado' WHEN 'cancelled_state' THEN 'Cancelado'\n WHEN 'confirmed_state' THEN 'Confirmado' WHEN 'active_state' THEN 'Activo'\n WHEN 'reserved_state' THEN 'Reservado' WHEN 'no_show_state' THEN 'No show' ELSE 'Otro' END AS estado\n FROM `autingo-159109.psql_dcpublic.service_requests`\n),\nj AS (\n SELECT d.numdoc, d.centro, d.ambito, d.venta,\n COALESCE(s.canal,'Sin solicitud') AS canal,\n COALESCE(s.modalidad,'Sin solicitud') AS modalidad,\n COALESCE(s.centro_tipo,'Sin solicitud') AS centro_tipo,\n COALESCE(s.estado,'Sin solicitud') AS estado\n FROM doc_web d\n LEFT JOIN sr_link1 sl USING (numdoc)\n LEFT JOIN sr_dims s ON s.sr_id = sl.sr_id\n),\ncen AS (\n -- por centro: total neto vs neto de docs CON solicitud\n SELECT centro, SUM(venta) total_net, SUM(IF(canal='Sin solicitud',0,venta)) sr_net\n FROM j GROUP BY centro\n),\njadj AS (\n -- reparto: el neto 'Sin solicitud' (devoluciones web sin SR) se absorbe\n -- reescalando los docs CON-SR al mix real canal/modalidad/centro/estado de cada centro.\n -- factor = total_net/sr_net (<=1 cuando hay devoluciones). Sankey queda TODO positivo.\n SELECT j.numdoc, j.centro, j.canal, j.modalidad, j.centro_tipo, j.estado,\n CASE WHEN c.sr_net > 0 THEN j.venta * SAFE_DIVIDE(c.total_net, c.sr_net) ELSE j.venta END AS venta\n FROM j JOIN cen c USING (centro)\n WHERE (c.sr_net > 0 AND j.canal != 'Sin solicitud') OR (c.sr_net <= 0)\n)\nSELECT modalidad AS categoria,\n ROUND(SUM(venta),0) AS venta_eur,\n COUNT(DISTINCT numdoc) AS pedidos,\n SAFE_DIVIDE(SUM(venta), SUM(SUM(venta)) OVER()) AS pct_online\nFROM jadj GROUP BY 1 ORDER BY 2 DESC"}]},"id":11752,"legacy_query":null,"parameter_mappings":[],"can_manage_db":false,"display":"table","archived_directly":false,"entity_id":"ul1-X-KmNTJt13NdXXE_b","collection_preview":true,"last-edit-info":{"id":301,"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","last_name":"","timestamp":"2026-06-17T10:07:59.657138Z"},"visualization_settings":{"table.column_widths":[],"column_settings":{"[\"name\",\"categoria\"]":{"column_title":"Modalidad"},"[\"name\",\"venta_eur\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0,"column_title":"Venta online (EUR)"},"[\"name\",\"pedidos\"]":{"column_title":"Pedidos"},"[\"name\",\"pct_online\"]":{"number_style":"percent","decimals":1,"column_title":"% del online"}}},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"claude","archive_operation_id":null,"name":"Claude","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":583,"archived_directly":null,"entity_id":"QjYHPvxn1zX2HY5U4QELT","location":"/","namespace":null,"is_personal":false,"created_at":"2026-03-17T15:46:05.729991Z"},"metabase_version":"v0.59.4 (d4fb593)","parameters":[],"dashboard_id":null,"created_at":"2026-06-16T12:02:15.468787Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_11857.json b/scratchpad/exf/card_11857.json new file mode 100644 index 00000000..cfd4ab66 --- /dev/null +++ b/scratchpad/exf/card_11857.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-06-18T16:29:06.074164Z","description":null,"archived":false,"view_count":132,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"lib/deduplicated-name":"d_max","lib/original-name":"d_max","name":"d_max","lib/source":"source/native","lib/source-column-alias":"d_max","source":"native","field_ref":["field","d_max",{"base-type":"type/DateTime"}],"effective_type":"type/DateTime","lib/desired-column-alias":"d_max","display_name":"d_max","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/DateTime":{"earliest":"2026-05-31T00:00:00Z","latest":"2026-05-31T00:00:00Z"}}},"base_type":"type/DateTime"},{"semantic_type":null,"lib/deduplicated-name":"valor","lib/original-name":"valor","name":"valor","lib/source":"source/native","lib/source-column-alias":"valor","source":"native","field_ref":["field","valor",{"base-type":"type/Float"}],"effective_type":"type/Float","lib/desired-column-alias":"valor","display_name":"valor","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":334342.0,"q1":334342.0,"q3":334342.0,"max":334342.0,"sd":null,"avg":334342.0}}},"base_type":"type/Float"},{"semantic_type":null,"lib/deduplicated-name":"valor_n1","lib/original-name":"valor_n1","name":"valor_n1","lib/source":"source/native","lib/source-column-alias":"valor_n1","source":"native","field_ref":["field","valor_n1",{"base-type":"type/Float"}],"effective_type":"type/Float","lib/desired-column-alias":"valor_n1","display_name":"valor_n1","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":201051.0,"q1":201051.0,"q3":201051.0,"max":201051.0,"sd":null,"avg":201051.0}}},"base_type":"type/Float"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","is_data_analyst":false,"last_login":null,"is_qbnewb":true,"is_superuser":false,"id":301,"last_name":"","tenant_id":null,"date_joined":"2025-09-15T09:45:46.250461Z","common_name":"data_exploration"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":583,"query_type":"native","name":"Venta web (pago web)","last_query_start":"2026-07-01T15:23:52.953854Z","is_remote_synced":false,"dashboard_count":1,"document_id":null,"last_used_at":"2026-07-01T15:23:53.442369Z","dashboard":null,"type":"question","average_query_time":5068.4098360655737705,"creator_id":301,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-06-18T16:29:08.62748Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":360,"dataset_query":{"lib/type":"mbql/query","database":6,"stages":[{"template-tags":{"fecha":{"dimension":["field",{"base-type":"type/DateTime","lib/uuid":"18cf1fcd-1dd8-40de-8ff6-009a77db7028"},109464],"widget-type":"date/range","type":"dimension","name":"fecha","display-name":"Fecha","id":"ffff0001-1094-4f00-aaaa-000000000001"},"centro":{"dimension":["field",{"base-type":"type/Text","lib/uuid":"2285effb-800b-4c33-9fec-20bca683e188"},278633],"widget-type":"string/=","type":"dimension","name":"centro","display-name":"Centro","id":"ffff0002-1094-4f00-aaaa-000000000002"},"ensena":{"dimension":["field",{"base-type":"type/Text","lib/uuid":"a5c35a46-8940-42e3-9bff-73431604ae52"},278634],"widget-type":"string/=","type":"dimension","name":"ensena","display-name":"Ensena","id":"ffff0003-1094-4f00-aaaa-000000000003"}},"lib/type":"mbql.stage/native","native":"WITH dwin AS (\n SELECT MIN(`anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha) lo, LEAST(MAX(`anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha), CURRENT_DATE()) hi\n FROM `autingo-159109.anjana_bi_datamart.Cubo_Ventas_Calculado` `anjana_bi_datamart.Cubo_Ventas_Calculado`\n WHERE `anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha >= DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY)\n [[AND {{fecha}}]]\n),\npw AS (\n SELECT DATE(sr.ask_date) AS d, sr.total_price_cents/100/1.21 AS v\n FROM `autingo-159109.psql_dcpublic.service_requests` sr\n JOIN `autingo-159109.psql_dcpublic.centers` cc ON cc.id = sr.center_id\n JOIN `autingo-159109.rag_datasets.Objeto_Centros` `rag_datasets.Objeto_Centros`\n ON `rag_datasets.Objeto_Centros`.nav_id = cc.nav_id\n WHERE sr.status = 3 AND sr.charged = TRUE AND sr.channel_id IN (1,2)\n AND DATE(sr.ask_date) >= DATE_SUB((SELECT lo FROM dwin), INTERVAL 1 YEAR)\n AND DATE(sr.ask_date) <= (SELECT hi FROM dwin)\n [[AND {{centro}}]]\n [[AND {{ensena}}]]\n),\nagg AS (\n SELECT\n SUM(CASE WHEN d BETWEEN (SELECT lo FROM dwin) AND (SELECT hi FROM dwin) THEN v END) AS valor,\n SUM(CASE WHEN d BETWEEN DATE_SUB((SELECT lo FROM dwin),INTERVAL 1 YEAR) AND DATE_SUB((SELECT hi FROM dwin),INTERVAL 1 YEAR) THEN v END) AS valor_n1\n FROM pw\n)\nSELECT (SELECT hi FROM dwin) AS d_max, ROUND(valor) AS valor, ROUND(valor_n1) AS valor_n1 FROM agg"}]},"id":11857,"legacy_query":null,"parameter_mappings":[],"can_manage_db":false,"display":"smartscalar","archived_directly":false,"entity_id":"-IjeccZAmo5FOkKhxAB-S","collection_preview":true,"last-edit-info":{"id":301,"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","last_name":"","timestamp":"2026-06-18T16:29:06.28107Z"},"visualization_settings":{"scalar.field":"valor","scalar.comparisons":[{"id":"cmp_n1","type":"anotherColumn","column":"valor_n1","label":"vs N-1"}],"column_settings":{"[\"name\",\"valor\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0},"[\"name\",\"valor_n1\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0}}},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"claude","archive_operation_id":null,"name":"Claude","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":583,"archived_directly":null,"entity_id":"QjYHPvxn1zX2HY5U4QELT","location":"/","namespace":null,"is_personal":false,"created_at":"2026-03-17T15:46:05.729991Z"},"metabase_version":"v0.59.4 (d4fb593)","parameters":[],"dashboard_id":null,"created_at":"2026-06-18T15:46:10.942444Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_11858.json b/scratchpad/exf/card_11858.json new file mode 100644 index 00000000..0fd9bcf4 --- /dev/null +++ b/scratchpad/exf/card_11858.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-06-18T16:29:14.885309Z","description":null,"archived":false,"view_count":129,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"lib/deduplicated-name":"d_max","lib/original-name":"d_max","name":"d_max","lib/source":"source/native","lib/source-column-alias":"d_max","source":"native","field_ref":["field","d_max",{"base-type":"type/DateTime"}],"effective_type":"type/DateTime","lib/desired-column-alias":"d_max","display_name":"d_max","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/DateTime":{"earliest":"2026-05-31T00:00:00Z","latest":"2026-05-31T00:00:00Z"}}},"base_type":"type/DateTime"},{"semantic_type":null,"lib/deduplicated-name":"valor","lib/original-name":"valor","name":"valor","lib/source":"source/native","lib/source-column-alias":"valor","source":"native","field_ref":["field","valor",{"base-type":"type/Float"}],"effective_type":"type/Float","lib/desired-column-alias":"valor","display_name":"valor","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":165041.0,"q1":165041.0,"q3":165041.0,"max":165041.0,"sd":null,"avg":165041.0}}},"base_type":"type/Float"},{"semantic_type":null,"lib/deduplicated-name":"valor_n1","lib/original-name":"valor_n1","name":"valor_n1","lib/source":"source/native","lib/source-column-alias":"valor_n1","source":"native","field_ref":["field","valor_n1",{"base-type":"type/Float"}],"effective_type":"type/Float","lib/desired-column-alias":"valor_n1","display_name":"valor_n1","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Number":{"min":101878.0,"q1":101878.0,"q3":101878.0,"max":101878.0,"sd":null,"avg":101878.0}}},"base_type":"type/Float"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","is_data_analyst":false,"last_login":null,"is_qbnewb":true,"is_superuser":false,"id":301,"last_name":"","tenant_id":null,"date_joined":"2025-09-15T09:45:46.250461Z","common_name":"data_exploration"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":583,"query_type":"native","name":"Citas previas (pago tienda)","last_query_start":"2026-07-01T15:23:53.209827Z","is_remote_synced":false,"dashboard_count":1,"document_id":null,"last_used_at":"2026-07-01T15:23:53.442369Z","dashboard":null,"type":"question","average_query_time":4342.4250000000000000,"creator_id":301,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-06-18T16:29:18.019412Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":360,"dataset_query":{"lib/type":"mbql/query","database":6,"stages":[{"template-tags":{"fecha":{"dimension":["field",{"base-type":"type/DateTime","lib/uuid":"18cf1fcd-1dd8-40de-8ff6-009a77db7028"},109464],"widget-type":"date/range","type":"dimension","name":"fecha","display-name":"Fecha","id":"ffff0001-1094-4f00-aaaa-000000000001"},"centro":{"dimension":["field",{"base-type":"type/Text","lib/uuid":"2285effb-800b-4c33-9fec-20bca683e188"},278633],"widget-type":"string/=","type":"dimension","name":"centro","display-name":"Centro","id":"ffff0002-1094-4f00-aaaa-000000000002"},"ensena":{"dimension":["field",{"base-type":"type/Text","lib/uuid":"a5c35a46-8940-42e3-9bff-73431604ae52"},278634],"widget-type":"string/=","type":"dimension","name":"ensena","display-name":"Ensena","id":"ffff0003-1094-4f00-aaaa-000000000003"}},"lib/type":"mbql.stage/native","native":"WITH dwin AS (\n SELECT MIN(`anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha) lo, LEAST(MAX(`anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha), CURRENT_DATE()) hi\n FROM `autingo-159109.anjana_bi_datamart.Cubo_Ventas_Calculado` `anjana_bi_datamart.Cubo_Ventas_Calculado`\n WHERE `anjana_bi_datamart.Cubo_Ventas_Calculado`.fecha >= DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY)\n [[AND {{fecha}}]]\n),\ncp AS (\n SELECT ar.appointment_created_at AS d, ar.total_income AS v\n FROM `autingo-159109.claude_bi.appointment_reports` ar\n JOIN `autingo-159109.psql_dcpublic.centers` cc ON cc.id = ar.center_id\n JOIN `autingo-159109.rag_datasets.Objeto_Centros` `rag_datasets.Objeto_Centros`\n ON `rag_datasets.Objeto_Centros`.nav_id = cc.nav_id\n WHERE ar.company_id IN (1,2)\n AND ar.appointment_created_at >= DATE_SUB((SELECT lo FROM dwin), INTERVAL 1 YEAR)\n AND ar.appointment_created_at <= (SELECT hi FROM dwin)\n [[AND {{centro}}]]\n [[AND {{ensena}}]]\n),\nagg AS (\n SELECT\n SUM(CASE WHEN d BETWEEN (SELECT lo FROM dwin) AND (SELECT hi FROM dwin) THEN v END) AS valor,\n SUM(CASE WHEN d BETWEEN DATE_SUB((SELECT lo FROM dwin),INTERVAL 1 YEAR) AND DATE_SUB((SELECT hi FROM dwin),INTERVAL 1 YEAR) THEN v END) AS valor_n1\n FROM cp\n)\nSELECT (SELECT hi FROM dwin) AS d_max, ROUND(valor) AS valor, ROUND(valor_n1) AS valor_n1 FROM agg"}]},"id":11858,"legacy_query":null,"parameter_mappings":[],"can_manage_db":false,"display":"smartscalar","archived_directly":false,"entity_id":"q8RdQHSrlHdicxKDazISY","collection_preview":true,"last-edit-info":{"id":301,"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","last_name":"","timestamp":"2026-06-18T16:29:15.072449Z"},"visualization_settings":{"scalar.field":"valor","scalar.comparisons":[{"id":"cmp_n1","type":"anotherColumn","column":"valor_n1","label":"vs N-1"}],"column_settings":{"[\"name\",\"valor\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0},"[\"name\",\"valor_n1\"]":{"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0}}},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"claude","archive_operation_id":null,"name":"Claude","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":583,"archived_directly":null,"entity_id":"QjYHPvxn1zX2HY5U4QELT","location":"/","namespace":null,"is_personal":false,"created_at":"2026-03-17T15:46:05.729991Z"},"metabase_version":"v0.59.4 (d4fb593)","parameters":[],"dashboard_id":null,"created_at":"2026-06-18T15:46:13.470005Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_4491.json b/scratchpad/exf/card_4491.json new file mode 100644 index 00000000..4b044661 --- /dev/null +++ b/scratchpad/exf/card_4491.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2025-08-18T14:54:44.860232Z","description":null,"archived":false,"view_count":15,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"display_name":"Fecha","field_ref":["field","Fecha",{"base-type":"type/DateTime"}],"base_type":"type/DateTime","effective_type":"type/DateTime","name":"Fecha","semantic_type":null,"fingerprint":{"global":{"distinct-count":237,"nil%":0},"type":{"type/DateTime":{"earliest":"2009-04-01T00:00:00Z","latest":"2009-12-31T00:00:00Z"}}}},{"display_name":"numeroDocumento","field_ref":["field","numeroDocumento",{"base-type":"type/Text"}],"base_type":"type/Text","effective_type":"type/Text","name":"numeroDocumento","semantic_type":null,"fingerprint":{"global":{"distinct-count":1503,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":8}}}},{"display_name":"NumeroLineas","field_ref":["field","NumeroLineas",{"base-type":"type/Integer"}],"base_type":"type/Integer","effective_type":"type/Integer","name":"NumeroLineas","semantic_type":null,"fingerprint":{"global":{"distinct-count":594,"nil%":0},"type":{"type/Number":{"min":6,"q1":228.51680318371746,"q3":466.9452125027003,"max":959,"sd":182.8957877390257,"avg":363.979}}}},{"display_name":"idCentro","field_ref":["field","idCentro",{"base-type":"type/Text"}],"base_type":"type/Text","effective_type":"type/Text","name":"idCentro","semantic_type":null,"fingerprint":{"global":{"distinct-count":27,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":2}}}},{"display_name":"idProducto","field_ref":["field","idProducto",{"base-type":"type/Text"}],"base_type":"type/Text","effective_type":"type/Text","name":"idProducto","semantic_type":null,"fingerprint":{"global":{"distinct-count":810,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":5.5705}}}},{"display_name":"cantidad","field_ref":["field","cantidad",{"base-type":"type/Decimal"}],"base_type":"type/Decimal","effective_type":"type/Decimal","name":"cantidad","semantic_type":null,"fingerprint":{"global":{"distinct-count":53,"nil%":0},"type":{"type/Number":{"min":-15,"q1":0.737163745697352,"q3":2.146316489243569,"max":190,"sd":7.007927601983151,"avg":2.6025}}}},{"display_name":"precioUnitario","field_ref":["field","precioUnitario",{"base-type":"type/Decimal"}],"base_type":"type/Decimal","effective_type":"type/Decimal","name":"precioUnitario","semantic_type":null,"fingerprint":{"global":{"distinct-count":853,"nil%":0},"type":{"type/Number":{"min":-83.33,"q1":2.821323927479358,"q3":19.420650445326515,"max":150.86,"sd":20.783292427628627,"avg":14.764758225973896}}}},{"display_name":"Base_imponible_linea","field_ref":["field","Base_imponible_linea",{"base-type":"type/Decimal"}],"base_type":"type/Decimal","effective_type":"type/Decimal","name":"Base_imponible_linea","semantic_type":null,"fingerprint":{"global":{"distinct-count":974,"nil%":0},"type":{"type/Number":{"min":-336.54,"q1":2.3747941572956925,"q3":25.211494358639815,"max":743.8,"sd":57.599729523052666,"avg":20.432785000000003}}}},{"display_name":"Tipo_de_documento","field_ref":["field","Tipo_de_documento",{"base-type":"type/Text"}],"base_type":"type/Text","effective_type":"type/Text","name":"Tipo_de_documento","semantic_type":null,"fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":7}}}},{"display_name":"semana","field_ref":["field","semana",{"base-type":"type/Integer"}],"base_type":"type/Integer","effective_type":"type/Integer","name":"semana","semantic_type":null,"fingerprint":{"global":{"distinct-count":40,"nil%":0},"type":{"type/Number":{"min":14,"q1":24.300905440843287,"q3":42.57370066220581,"max":53,"sd":11.074430696773032,"avg":33.4425}}}},{"display_name":"ano","field_ref":["field","ano",{"base-type":"type/Integer"}],"base_type":"type/Integer","effective_type":"type/Integer","name":"ano","semantic_type":null,"fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Number":{"min":2009,"q1":2009,"q3":2009,"max":2009,"sd":0,"avg":2009}}}},{"display_name":"ano_mas_uno","field_ref":["field","ano_mas_uno",{"base-type":"type/Integer"}],"base_type":"type/Integer","effective_type":"type/Integer","name":"ano_mas_uno","semantic_type":null,"fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Number":{"min":2010,"q1":2010,"q3":2010,"max":2010,"sd":0,"avg":2010}}}},{"display_name":"Fecha_mas_un_ano","field_ref":["field","Fecha_mas_un_ano",{"base-type":"type/DateTime"}],"base_type":"type/DateTime","effective_type":"type/DateTime","name":"Fecha_mas_un_ano","semantic_type":null,"fingerprint":{"global":{"distinct-count":237,"nil%":0},"type":{"type/DateTime":{"earliest":"2010-04-01T00:00:00Z","latest":"2010-12-31T00:00:00Z"}}}},{"display_name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","field_ref":["field","Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c",{"base-type":"type/Text"}],"base_type":"type/Text","effective_type":"type/Text","name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","semantic_type":null,"fingerprint":{"global":{"distinct-count":1,"nil%":1},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":0}}}},{"display_name":"NumeroLineaOrdenada","field_ref":["field","NumeroLineaOrdenada",{"base-type":"type/Integer"}],"base_type":"type/Integer","effective_type":"type/Integer","name":"NumeroLineaOrdenada","semantic_type":null,"fingerprint":{"global":{"distinct-count":513,"nil%":0},"type":{"type/Number":{"min":1,"q1":62.51603683133231,"q3":260.1455507916213,"max":856,"sd":148.4200744691083,"avg":180.871}}}}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"egutierrez@aurgi.com","first_name":"Enmanuel","is_data_analyst":false,"last_login":"2026-07-01T10:00:47.469194Z","is_qbnewb":false,"is_superuser":true,"id":219,"last_name":"Gutierrez Perez","tenant_id":null,"date_joined":"2024-03-26T10:34:07.442Z","common_name":"Enmanuel Gutierrez Perez"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":406,"query_type":"native","name":"Movimientos Lineas de Venta - TPV - Numero_de_linea","last_query_start":"2026-07-01T14:27:50.716013Z","is_remote_synced":false,"dashboard_count":0,"document_id":null,"last_used_at":"2026-07-01T15:22:06.256525Z","dashboard":null,"type":"question","average_query_time":12620.705882352941,"creator_id":219,"can_restore":false,"moderation_reviews":[],"updated_at":"2025-08-18T14:54:44.828424Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":null,"dataset_query":{"lib/type":"mbql/query","stages":[{"lib/type":"mbql.stage/native","native":"SELECT\n `source`.`Fecha` AS `Fecha`,\n `source`.`numeroDocumento` AS `numeroDocumento`,\n `source`.`NumeroLineas` AS `NumeroLineas`,\n `source`.`idCentro` AS `idCentro`,\n `source`.`idProducto` AS `idProducto`,\n `source`.`cantidad` AS `cantidad`,\n `source`.`precioUnitario` AS `precioUnitario`,\n `source`.`Base_imponible_linea` AS `Base_imponible_linea`,\n `source`.`Tipo_de_documento` AS `Tipo_de_documento`,\n `source`.`semana` AS `semana`,\n `source`.`ano` AS `ano`,\n `source`.`ano_mas_uno` AS `ano_mas_uno`,\n `source`.`Fecha_mas_un_ano` AS `Fecha_mas_un_ano`,\n `source`.`Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c`,\nROW_NUMBER() OVER (\n PARTITION BY source.numeroDocumento\n ORDER BY source.idProducto ASC\n) AS NumeroLineaOrdenada\n\nFROM\n (\n SELECT\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha` AS `Fecha`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`numeroDocumento` AS `numeroDocumento`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`NumeroLineas` AS `NumeroLineas`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`idCentro` AS `idCentro`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`idProducto` AS `idProducto`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`cantidad` AS `cantidad`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`precioUnitario` AS `precioUnitario`,\n `stg_anjana_bi.Movimientos_sin_albaranes`.`cantidad` * `stg_anjana_bi.Movimientos_sin_albaranes`.`precioUnitario` AS `Base_imponible_linea`,\n CASE\n WHEN `stg_anjana_bi.Movimientos_sin_albaranes`.`idTipoDocumento` = 1 THEN 'Factura'\n WHEN `stg_anjana_bi.Movimientos_sin_albaranes`.`idTipoDocumento` = 2 THEN 'Abono'\n END AS `Tipo_de_documento`,\n EXTRACT(\n isoweek\n FROM\n TIMESTAMP(\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\n 'Europe/Madrid'\n ) AT TIME ZONE 'Europe/Madrid'\n ) AS `semana`,\n EXTRACT(\n year\n FROM\n TIMESTAMP(\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\n 'Europe/Madrid'\n ) AT TIME ZONE 'Europe/Madrid'\n ) AS `ano`,\n EXTRACT(\n year\n FROM\n TIMESTAMP(\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\n 'Europe/Madrid'\n ) AT TIME ZONE 'Europe/Madrid'\n ) + 1 AS `ano_mas_uno`,\n DATETIME_ADD(\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\n INTERVAL 1 year\n ) AS `Fecha_mas_un_ano`,\n `Anjana_Sales_Cr_Memo_Header___NumeroDocumento`.`corrected_invoice_no_` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c`\n FROM\n `stg_anjana_bi.Movimientos_sin_albaranes`\n \nLEFT JOIN `mssql2022_dbo.anjana_sales_cr_memo_header` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento` ON `stg_anjana_bi.Movimientos_sin_albaranes`.`numeroDocumento` = `Anjana_Sales_Cr_Memo_Header___NumeroDocumento`.`no_`\n \nORDER BY\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha` DESC\n ) AS `source`"}],"database":6,"lib.convert/converted?":true},"id":4491,"legacy_query":"{\"database\":6,\"type\":\"native\",\"native\":{\"template-tags\":{},\"query\":\"SELECT\\n `source`.`Fecha` AS `Fecha`,\\n `source`.`numeroDocumento` AS `numeroDocumento`,\\n `source`.`NumeroLineas` AS `NumeroLineas`,\\n `source`.`idCentro` AS `idCentro`,\\n `source`.`idProducto` AS `idProducto`,\\n `source`.`cantidad` AS `cantidad`,\\n `source`.`precioUnitario` AS `precioUnitario`,\\n `source`.`Base_imponible_linea` AS `Base_imponible_linea`,\\n `source`.`Tipo_de_documento` AS `Tipo_de_documento`,\\n `source`.`semana` AS `semana`,\\n `source`.`ano` AS `ano`,\\n `source`.`ano_mas_uno` AS `ano_mas_uno`,\\n `source`.`Fecha_mas_un_ano` AS `Fecha_mas_un_ano`,\\n `source`.`Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c`,\\nROW_NUMBER() OVER (\\n PARTITION BY source.numeroDocumento\\n ORDER BY source.idProducto ASC\\n) AS NumeroLineaOrdenada\\n\\nFROM\\n (\\n SELECT\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha` AS `Fecha`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`numeroDocumento` AS `numeroDocumento`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`NumeroLineas` AS `NumeroLineas`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`idCentro` AS `idCentro`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`idProducto` AS `idProducto`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`cantidad` AS `cantidad`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`precioUnitario` AS `precioUnitario`,\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`cantidad` * `stg_anjana_bi.Movimientos_sin_albaranes`.`precioUnitario` AS `Base_imponible_linea`,\\n CASE\\n WHEN `stg_anjana_bi.Movimientos_sin_albaranes`.`idTipoDocumento` = 1 THEN 'Factura'\\n WHEN `stg_anjana_bi.Movimientos_sin_albaranes`.`idTipoDocumento` = 2 THEN 'Abono'\\n END AS `Tipo_de_documento`,\\n EXTRACT(\\n isoweek\\n FROM\\n TIMESTAMP(\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\\n 'Europe/Madrid'\\n ) AT TIME ZONE 'Europe/Madrid'\\n ) AS `semana`,\\n EXTRACT(\\n year\\n FROM\\n TIMESTAMP(\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\\n 'Europe/Madrid'\\n ) AT TIME ZONE 'Europe/Madrid'\\n ) AS `ano`,\\n EXTRACT(\\n year\\n FROM\\n TIMESTAMP(\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\\n 'Europe/Madrid'\\n ) AT TIME ZONE 'Europe/Madrid'\\n ) + 1 AS `ano_mas_uno`,\\n DATETIME_ADD(\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha`,\\n INTERVAL 1 year\\n ) AS `Fecha_mas_un_ano`,\\n `Anjana_Sales_Cr_Memo_Header___NumeroDocumento`.`corrected_invoice_no_` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c`\\n FROM\\n `stg_anjana_bi.Movimientos_sin_albaranes`\\n \\nLEFT JOIN `mssql2022_dbo.anjana_sales_cr_memo_header` AS `Anjana_Sales_Cr_Memo_Header___NumeroDocumento` ON `stg_anjana_bi.Movimientos_sin_albaranes`.`numeroDocumento` = `Anjana_Sales_Cr_Memo_Header___NumeroDocumento`.`no_`\\n \\nORDER BY\\n `stg_anjana_bi.Movimientos_sin_albaranes`.`Fecha` DESC\\n ) AS `source`\"}}","parameter_mappings":[],"can_manage_db":false,"display":"table","archived_directly":false,"entity_id":"klEUDp8SBPOaFSipvWzOJ","collection_preview":true,"last-edit-info":{"id":219,"email":"egutierrez@aurgi.com","first_name":"Enmanuel","last_name":"Gutierrez Perez","timestamp":"2025-08-18T14:54:44.98777Z"},"visualization_settings":{"table.columns":[{"name":"Fecha","enabled":true},{"name":"numeroDocumento","enabled":true},{"name":"quote_no_","enabled":true},{"name":"cantidad","enabled":true},{"name":"precioUnitario","enabled":true},{"name":"Base_imponible_linea","enabled":true},{"name":"NumeroLineas","enabled":true},{"name":"idCentro","enabled":true},{"name":"idProducto","enabled":true},{"name":"semana","enabled":true},{"name":"Tipo_de_documento","enabled":true},{"name":"ano","enabled":true},{"name":"ano_mas_uno","enabled":true},{"name":"Fecha_mas_un_ano","enabled":true},{"name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","enabled":true},{"name":"NumeroLineaOrdenada","enabled":true}],"table.pivot_column":"quote_no_","table.cell_column":"NumeroLineas"},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"ventas","archive_operation_id":null,"name":"VENTAS","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":406,"archived_directly":null,"entity_id":"EMsdi8wENXf6riuJelXXz","location":"/400/","namespace":null,"is_personal":false,"created_at":"2025-07-17T22:44:53.718794Z"},"metabase_version":"v0.55.7 (dcea6a4)","parameters":[],"dashboard_id":null,"created_at":"2025-08-14T13:42:53.711543Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_4493.json b/scratchpad/exf/card_4493.json new file mode 100644 index 00000000..c2170782 --- /dev/null +++ b/scratchpad/exf/card_4493.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-03-13T11:30:49.643569Z","description":null,"archived":false,"view_count":41,"collection_position":null,"source_card_id":null,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"lib/deduplicated-name":"orderitem_id","lib/original-name":"orderitem_id","name":"orderitem_id","lib/source":"source/native","lib/source-column-alias":"orderitem_id","source":"native","field_ref":["field","orderitem_id",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"orderitem_id","display_name":"orderitem_id","fingerprint":{"global":{"distinct-count":2000,"nil%":0.0},"type":{"type/Number":{"min":52037.0,"q1":2.958684657004202E7,"q3":3.886825380192011E7,"max":4.3790929E7,"sd":7775367.058340133,"avg":3.3509041372999996E7}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"valor_linea","lib/original-name":"valor_linea","name":"valor_linea","lib/source":"source/native","lib/source-column-alias":"valor_linea","source":"native","field_ref":["field","valor_linea",{"base-type":"type/Float"}],"effective_type":"type/Float","lib/desired-column-alias":"valor_linea","display_name":"valor_linea","fingerprint":{"global":{"distinct-count":397,"nil%":0.0},"type":{"type/Number":{"min":-41.32231404958678,"q1":3.4984741920903693,"q3":14.513617112679555,"max":260.3223140495868,"sd":18.0196126096143,"avg":12.256510041322315}}},"base_type":"type/Float"},{"semantic_type":null,"lib/deduplicated-name":"nav_id","lib/original-name":"nav_id","name":"nav_id","lib/source":"source/native","lib/source-column-alias":"nav_id","source":"native","field_ref":["field","nav_id",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"nav_id","display_name":"nav_id","fingerprint":{"global":{"distinct-count":1900,"nil%":0.0},"type":{"type/Text":{"percent-json":0.0,"percent-url":0.0,"percent-email":0.0,"percent-state":0.0,"average-length":14.3245}}},"base_type":"type/Text"},{"semantic_type":null,"lib/deduplicated-name":"fecha","lib/original-name":"fecha","name":"fecha","lib/source":"source/native","lib/source-column-alias":"fecha","source":"native","field_ref":["field","fecha",{"base-type":"type/DateTimeWithLocalTZ"}],"effective_type":"type/DateTimeWithLocalTZ","lib/desired-column-alias":"fecha","display_name":"fecha","fingerprint":{"global":{"distinct-count":1900,"nil%":0.0},"type":{"type/DateTime":{"earliest":"2022-04-08T12:29:36.66388Z","latest":"2026-03-27T08:55:13.41165Z"}}},"base_type":"type/DateTimeWithLocalTZ"},{"semantic_type":null,"lib/deduplicated-name":"product_id","lib/original-name":"product_id","name":"product_id","lib/source":"source/native","lib/source-column-alias":"product_id","source":"native","field_ref":["field","product_id",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"product_id","display_name":"product_id","fingerprint":{"global":{"distinct-count":663,"nil%":0.0},"type":{"type/Number":{"min":11063.0,"q1":4615920.257072156,"q3":2.2125587145358697E7,"max":1.945374409E9,"sd":4.098977027978754E8,"avg":1.942166970095E8}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"center_id","lib/original-name":"center_id","name":"center_id","lib/source":"source/native","lib/source-column-alias":"center_id","source":"native","field_ref":["field","center_id",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"center_id","display_name":"center_id","fingerprint":{"global":{"distinct-count":101,"nil%":0.0},"type":{"type/Number":{"min":2.0,"q1":53.1546964091676,"q3":126.4687697567652,"max":186.0,"sd":44.46849855700444,"avg":81.8615}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"tipo","lib/original-name":"tipo","name":"tipo","lib/source":"source/native","lib/source-column-alias":"tipo","source":"native","field_ref":["field","tipo",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"tipo","display_name":"tipo","fingerprint":{"global":{"distinct-count":1,"nil%":0.0},"type":{"type/Text":{"percent-json":0.0,"percent-url":0.0,"percent-email":0.0,"percent-state":0.0,"average-length":7.0}}},"base_type":"type/Text"},{"semantic_type":null,"lib/deduplicated-name":"cantidad","lib/original-name":"cantidad","name":"cantidad","lib/source":"source/native","lib/source-column-alias":"cantidad","source":"native","field_ref":["field","cantidad",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"cantidad","display_name":"cantidad","fingerprint":{"global":{"distinct-count":8,"nil%":0.0},"type":{"type/Number":{"min":-1.0,"q1":0.46078244174660665,"q3":1.3752743488444183,"max":133.0,"sd":2.990908309570544,"avg":1.1595}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"nav_id_producto","lib/original-name":"nav_id_producto","name":"nav_id_producto","lib/source":"source/native","lib/source-column-alias":"nav_id_producto","source":"native","field_ref":["field","nav_id_producto",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"nav_id_producto","display_name":"nav_id_producto","fingerprint":{"global":{"distinct-count":663,"nil%":0.0},"type":{"type/Text":{"percent-json":0.0,"percent-url":0.0,"percent-email":0.0,"percent-state":0.0,"average-length":5.553}}},"base_type":"type/Text"},{"semantic_type":null,"lib/deduplicated-name":"NumeroLineaOrdenada","lib/original-name":"NumeroLineaOrdenada","name":"NumeroLineaOrdenada","lib/source":"source/native","lib/source-column-alias":"NumeroLineaOrdenada","source":"native","field_ref":["field","NumeroLineaOrdenada",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"NumeroLineaOrdenada","display_name":"NumeroLineaOrdenada","fingerprint":{"global":{"distinct-count":8,"nil%":0.0},"type":{"type/Number":{"min":1.0,"q1":1.0,"q3":1.916864166750122,"max":8.0,"sd":0.8938563864625065,"avg":1.5205}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/deduplicated-name":"NumeroLineasTotales","lib/original-name":"NumeroLineasTotales","name":"NumeroLineasTotales","lib/source":"source/native","lib/source-column-alias":"NumeroLineasTotales","source":"native","field_ref":["field","NumeroLineasTotales",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"NumeroLineasTotales","display_name":"NumeroLineasTotales","fingerprint":{"global":{"distinct-count":11,"nil%":0.0},"type":{"type/Number":{"min":1.0,"q1":1.1270963406603265,"q3":2.6753046269430953,"max":12.0,"sd":1.309847930410397,"avg":2.0875}}},"base_type":"type/Integer"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"egutierrez@aurgi.com","first_name":"Enmanuel","is_data_analyst":false,"last_login":"2026-07-01T10:00:47.469194Z","is_qbnewb":false,"is_superuser":true,"id":219,"last_name":"Gutierrez Perez","tenant_id":null,"date_joined":"2024-03-26T10:34:07.442Z","common_name":"Enmanuel Gutierrez Perez"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":406,"query_type":"native","name":"Movimientos de venta de TPV con numero de linea","last_query_start":"2026-07-01T14:28:26.630814Z","is_remote_synced":false,"dashboard_count":1,"document_id":null,"last_used_at":"2026-07-01T15:22:06.256525Z","dashboard":null,"type":"question","average_query_time":15764.961538461538,"creator_id":219,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-03-13T11:31:30.088739Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":null,"dataset_query":{"lib/type":"mbql/query","stages":[{"lib/type":"mbql.stage/native","native":"SELECT\n tpv.*, \n `Products___product_id`.`nav_id` AS `nav_id_producto`,\n \n ROW_NUMBER() OVER (\n PARTITION BY tpv.`nav_id`\n ORDER BY SAFE_CAST(`Products___product_id`.`nav_id`as int) ASC,\n tpv.`valor_linea` ASC\n ) AS NumeroLineaOrdenada,\n\n \n COUNT(*) OVER (\n PARTITION BY tpv.`nav_id`\n ) AS NumeroLineasTotales\n \nFROM `autingo-159109.anjana_bi_datamart.Lineas_ventas-TPV_Ok` AS tpv\nLEFT JOIN `psql_dcpublic.products` AS `Products___product_id` \n ON tpv.`product_id` = `Products___product_id`.`id`\n\nWHERE tpv.`valor_linea` != 0"}],"database":6,"lib.convert/converted?":true},"id":4493,"legacy_query":"{\"database\":6,\"type\":\"native\",\"native\":{\"template-tags\":{},\"query\":\"SELECT\\n tpv.*, \\n `Products___product_id`.`nav_id` AS `nav_id_producto`,\\n \\n ROW_NUMBER() OVER (\\n PARTITION BY tpv.`nav_id`\\n ORDER BY SAFE_CAST(`Products___product_id`.`nav_id`as int) ASC,\\n tpv.`valor_linea` ASC\\n ) AS NumeroLineaOrdenada,\\n\\n \\n COUNT(*) OVER (\\n PARTITION BY tpv.`nav_id`\\n ) AS NumeroLineasTotales\\n \\nFROM `autingo-159109.anjana_bi_datamart.Lineas_ventas-TPV_Ok` AS tpv\\nLEFT JOIN `psql_dcpublic.products` AS `Products___product_id` \\n ON tpv.`product_id` = `Products___product_id`.`id`\\n\\nWHERE tpv.`valor_linea` != 0\"}}","parameter_mappings":[],"can_manage_db":false,"display":"table","archived_directly":false,"entity_id":"AtlqaDw6F5_apLBZ6hW-B","collection_preview":true,"last-edit-info":{"id":219,"email":"egutierrez@aurgi.com","first_name":"Enmanuel","last_name":"Gutierrez Perez","timestamp":"2026-03-13T11:30:49.803253Z"},"visualization_settings":{"table.pivot_column":"tipo","table.cell_column":"valor_linea"},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"ventas","archive_operation_id":null,"name":"VENTAS","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":406,"archived_directly":null,"entity_id":"EMsdi8wENXf6riuJelXXz","location":"/400/","namespace":null,"is_personal":false,"created_at":"2025-07-17T22:44:53.718794Z"},"metabase_version":"v0.55.7 (dcea6a4)","parameters":[],"dashboard_id":null,"created_at":"2025-08-14T13:49:49.845138Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/card_4494.json b/scratchpad/exf/card_4494.json new file mode 100644 index 00000000..9c69a5b1 --- /dev/null +++ b/scratchpad/exf/card_4494.json @@ -0,0 +1 @@ +{"cache_invalidated_at":"2026-07-01T14:26:54.88337Z","description":null,"archived":false,"view_count":60,"collection_position":1,"source_card_id":4491,"table_id":null,"can_run_adhoc_query":true,"result_metadata":[{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"Fecha","lib/original-name":"Fecha","lib/breakout?":false,"name":"Fecha","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"Fecha","source":"fields","field_ref":["field","Fecha",{"base-type":"type/DateTime"}],"effective_type":"type/DateTime","lib/desired-column-alias":"Fecha","display_name":"Fecha","fingerprint":{"global":{"distinct-count":237,"nil%":0},"type":{"type/DateTime":{"earliest":"2009-04-01T00:00:00Z","latest":"2009-12-31T00:00:00Z"}}},"base_type":"type/DateTime"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"numeroDocumento","lib/original-name":"numeroDocumento","lib/breakout?":false,"name":"numeroDocumento","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"numeroDocumento","source":"fields","field_ref":["field","numeroDocumento",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"numeroDocumento","display_name":"numeroDocumento","fingerprint":{"global":{"distinct-count":1503,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":8}}},"base_type":"type/Text"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"NumeroLineas","lib/original-name":"NumeroLineas","lib/breakout?":false,"name":"NumeroLineas","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"NumeroLineas","source":"fields","field_ref":["field","NumeroLineas",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"NumeroLineas","display_name":"NumeroLineas","fingerprint":{"global":{"distinct-count":594,"nil%":0},"type":{"type/Number":{"min":6,"q1":228.51680318371746,"q3":466.9452125027003,"max":959,"sd":182.8957877390257,"avg":363.979}}},"base_type":"type/Integer"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"idCentro","lib/original-name":"idCentro","lib/breakout?":false,"name":"idCentro","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"idCentro","source":"fields","field_ref":["field","idCentro",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"idCentro","display_name":"idCentro","fingerprint":{"global":{"distinct-count":27,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":2}}},"base_type":"type/Text"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"idProducto","lib/original-name":"idProducto","lib/breakout?":false,"name":"idProducto","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"idProducto","source":"fields","field_ref":["field","idProducto",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"idProducto","display_name":"idProducto","fingerprint":{"global":{"distinct-count":810,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":5.5705}}},"base_type":"type/Text"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"cantidad","lib/original-name":"cantidad","lib/breakout?":false,"name":"cantidad","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"cantidad","source":"fields","field_ref":["field","cantidad",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"cantidad","display_name":"cantidad","fingerprint":{"global":{"distinct-count":53,"nil%":0},"type":{"type/Number":{"min":-15,"q1":0.737163745697352,"q3":2.146316489243569,"max":190,"sd":7.007927601983151,"avg":2.6025}}},"base_type":"type/Decimal"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"precioUnitario","lib/original-name":"precioUnitario","lib/breakout?":false,"name":"precioUnitario","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"precioUnitario","source":"fields","field_ref":["field","precioUnitario",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"precioUnitario","display_name":"precioUnitario","fingerprint":{"global":{"distinct-count":853,"nil%":0},"type":{"type/Number":{"min":-83.33,"q1":2.821323927479358,"q3":19.420650445326515,"max":150.86,"sd":20.783292427628627,"avg":14.764758225973896}}},"base_type":"type/Decimal"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"Base_imponible_linea","lib/original-name":"Base_imponible_linea","lib/breakout?":false,"name":"Base_imponible_linea","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"Base_imponible_linea","source":"fields","field_ref":["field","Base_imponible_linea",{"base-type":"type/Decimal"}],"effective_type":"type/Decimal","lib/desired-column-alias":"Base_imponible_linea","display_name":"Base_imponible_linea","fingerprint":{"global":{"distinct-count":974,"nil%":0},"type":{"type/Number":{"min":-336.54,"q1":2.3747941572956925,"q3":25.211494358639815,"max":743.8,"sd":57.599729523052666,"avg":20.432785000000003}}},"base_type":"type/Decimal"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"Tipo_de_documento","lib/original-name":"Tipo_de_documento","lib/breakout?":false,"name":"Tipo_de_documento","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"Tipo_de_documento","source":"fields","field_ref":["field","Tipo_de_documento",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"Tipo_de_documento","display_name":"Tipo_de_documento","fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":7}}},"base_type":"type/Text"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"semana","lib/original-name":"semana","lib/breakout?":false,"name":"semana","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"semana","source":"fields","field_ref":["field","semana",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"semana","display_name":"semana","fingerprint":{"global":{"distinct-count":40,"nil%":0},"type":{"type/Number":{"min":14,"q1":24.300905440843287,"q3":42.57370066220581,"max":53,"sd":11.074430696773032,"avg":33.4425}}},"base_type":"type/Integer"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"ano","lib/original-name":"ano","lib/breakout?":false,"name":"ano","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"ano","source":"fields","field_ref":["field","ano",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"ano","display_name":"ano","fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Number":{"min":2009,"q1":2009,"q3":2009,"max":2009,"sd":0,"avg":2009}}},"base_type":"type/Integer"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"ano_mas_uno","lib/original-name":"ano_mas_uno","lib/breakout?":false,"name":"ano_mas_uno","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"ano_mas_uno","source":"fields","field_ref":["field","ano_mas_uno",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"ano_mas_uno","display_name":"ano_mas_uno","fingerprint":{"global":{"distinct-count":1,"nil%":0},"type":{"type/Number":{"min":2010,"q1":2010,"q3":2010,"max":2010,"sd":0,"avg":2010}}},"base_type":"type/Integer"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"Fecha_mas_un_ano","lib/original-name":"Fecha_mas_un_ano","lib/breakout?":false,"name":"Fecha_mas_un_ano","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"Fecha_mas_un_ano","source":"fields","field_ref":["field","Fecha_mas_un_ano",{"base-type":"type/DateTime"}],"effective_type":"type/DateTime","lib/desired-column-alias":"Fecha_mas_un_ano","display_name":"Fecha_mas_un_ano","fingerprint":{"global":{"distinct-count":237,"nil%":0},"type":{"type/DateTime":{"earliest":"2010-04-01T00:00:00Z","latest":"2010-12-31T00:00:00Z"}}},"base_type":"type/DateTime"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","lib/original-name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","lib/breakout?":false,"name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","source":"fields","field_ref":["field","Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c",{"base-type":"type/Text"}],"effective_type":"type/Text","lib/desired-column-alias":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","display_name":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","fingerprint":{"global":{"distinct-count":1,"nil%":1},"type":{"type/Text":{"percent-json":0,"percent-url":0,"percent-email":0,"percent-state":0,"average-length":0}}},"base_type":"type/Text"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"NumeroLineaOrdenada","lib/original-name":"NumeroLineaOrdenada","lib/breakout?":false,"name":"NumeroLineaOrdenada","lib/card-id":4491,"lib/source":"source/previous-stage","lib/source-column-alias":"NumeroLineaOrdenada","source":"fields","field_ref":["field","NumeroLineaOrdenada",{"base-type":"type/Integer"}],"effective_type":"type/Integer","lib/desired-column-alias":"NumeroLineaOrdenada","display_name":"NumeroLineaOrdenada","fingerprint":{"global":{"distinct-count":513,"nil%":0},"type":{"type/Number":{"min":1,"q1":62.51603683133231,"q3":260.1455507916213,"max":856,"sd":148.4200744691083,"avg":180.871}}},"base_type":"type/Integer"},{"semantic_type":null,"lib/expression-name":"Valor_tpv","qp/implicit-field?":true,"lib/deduplicated-name":"Valor_tpv","lib/original-name":"Valor_tpv","name":"Valor_tpv","lib/source":"source/expressions","lib/source-column-alias":"Valor_tpv","source":"fields","field_ref":["expression","Valor_tpv"],"effective_type":"type/Float","lib/desired-column-alias":"Valor_tpv","display_name":"Valor_tpv","base_type":"type/Float"},{"semantic_type":null,"lib/expression-name":"diferencia","qp/implicit-field?":true,"lib/deduplicated-name":"diferencia","lib/original-name":"diferencia","name":"diferencia","lib/source":"source/expressions","lib/source-column-alias":"diferencia","source":"fields","field_ref":["expression","diferencia"],"effective_type":"type/Float","lib/desired-column-alias":"diferencia","display_name":"diferencia","base_type":"type/Float"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"orderitem_id","lib/original-name":"orderitem_id","lib/breakout?":false,"name":"orderitem_id","lib/card-id":4493,"lib/source":"source/joins","lib/source-column-alias":"orderitem_id","lib/original-display-name":"orderitem_id","source":"fields","lib/original-join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","field_ref":["field","orderitem_id",{"base-type":"type/Integer","join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c"}],"effective_type":"type/Integer","lib/desired-column-alias":"Movimientos de venta de TPV con numero de linea - n_ecf5fefa","options":{"qp/ignore-coercion":true},"display_name":"Ordeitem Id","fingerprint":{"global":{"distinct-count":2000,"nil%":0.0},"type":{"type/Number":{"min":52037.0,"q1":2.958684657004202E7,"q3":3.886825380192011E7,"max":4.3790929E7,"sd":7775367.058340133,"avg":3.3509041372999996E7}}},"base_type":"type/Integer","source_alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","metabase.lib.join/join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c"},{"semantic_type":null,"qp/implicit-field?":true,"lib/deduplicated-name":"valor_linea","lib/original-name":"valor_linea","lib/breakout?":false,"name":"valor_linea","lib/card-id":4493,"lib/source":"source/joins","lib/source-column-alias":"valor_linea","lib/original-display-name":"valor_linea","source":"fields","lib/original-join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","field_ref":["field","valor_linea",{"base-type":"type/Float","join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c"}],"effective_type":"type/Float","lib/desired-column-alias":"Movimientos de venta de TPV con numero de linea - n_4b0dbdaf","options":{"qp/ignore-coercion":true},"display_name":"Valor_Linea TPV","fingerprint":{"global":{"distinct-count":397,"nil%":0.0},"type":{"type/Number":{"min":-41.32231404958678,"q1":3.4984741920903693,"q3":14.513617112679555,"max":260.3223140495868,"sd":18.0196126096143,"avg":12.256510041322315}}},"base_type":"type/Float","source_alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","metabase.lib.join/join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c"},{"description":null,"database_type":"INTEGER","semantic_type":null,"table_id":1555,"qp/implicit-field?":true,"lib/deduplicated-name":"order_id","lib/original-name":"order_id","lib/breakout?":false,"name":"order_id","lib/source":"source/joins","lib/source-column-alias":"order_id","lib/original-display-name":"Order ID","settings":null,"source":"fields","fk_target_field_id":null,"lib/original-join-alias":"Tpv Orders Orderitem - orderitem_id","field_ref":["field",16711,{"join-alias":"Tpv Orders Orderitem - orderitem_id"}],"effective_type":"type/Integer","active":true,"id":16711,"database_partitioned":false,"lib/desired-column-alias":"Tpv Orders Orderitem - orderitem_id__order_id","position":2,"visibility_type":"normal","options":{"qp/ignore-coercion":true},"display_name":"Order ID","fingerprint":{"global":{"distinct-count":9760,"nil%":0.0},"type":{"type/Number":{"min":177.0,"q1":10874.659045031356,"q3":29971.437643027562,"max":42937.0,"sd":11525.57162283473,"avg":20604.146399999998}}},"base_type":"type/Integer","source_alias":"Tpv Orders Orderitem - orderitem_id","metabase.lib.join/join-alias":"Tpv Orders Orderitem - orderitem_id"}],"embedding_type":null,"dependency_analysis_version":0,"creator":{"email":"egutierrez@aurgi.com","first_name":"Enmanuel","is_data_analyst":false,"last_login":"2026-07-01T10:00:47.469194Z","is_qbnewb":false,"is_superuser":true,"id":219,"last_name":"Gutierrez Perez","tenant_id":null,"date_joined":"2024-03-26T10:34:07.442Z","common_name":"Enmanuel Gutierrez Perez"},"initially_published_at":null,"can_write":true,"card_schema":23,"database_id":6,"enable_embedding":false,"collection_id":406,"query_type":"query","name":"Movimientos de Venta de Navision con Orderitem TPV","last_query_start":"2026-07-01T15:22:06.02549Z","is_remote_synced":false,"dashboard_count":0,"document_id":null,"last_used_at":"2026-07-01T15:22:06.256525Z","dashboard":null,"type":"model","persisted":false,"average_query_time":15323.300000000000,"creator_id":219,"can_restore":false,"moderation_reviews":[],"updated_at":"2026-07-01T14:26:54.870111Z","made_public_by_id":null,"embedding_params":null,"cache_ttl":null,"dataset_query":{"lib/type":"mbql/query","database":6,"stages":[{"order-by":[["desc",{"lib/uuid":"b49d15a7-c413-4ca1-a4ab-4ccacde2e30b"},["expression",{"effective-type":"type/Float","base-type":"type/Float","lib/uuid":"5bc94ea3-2f0d-4a7b-8348-9c663b7e634e"},"diferencia"]]],"lib/type":"mbql.stage/mbql","joins":[{"lib/type":"mbql/join","fields":[["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Integer","lib/uuid":"28994135-1096-4c6c-8004-cd3332c01f1d"},"orderitem_id"],["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Float","lib/uuid":"005f7d4d-4a41-4834-96c1-617b92b9c5f2"},"valor_linea"]],"alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","strategy":"left-join","conditions":[["=",{"lib/uuid":"8b7ccf32-f9fa-421f-bda4-8cbc30718b69"},["field",{"base-type":"type/Text","lib/uuid":"08698809-ab05-4708-bd06-47d7bf72602b"},"numeroDocumento"],["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Text","lib/uuid":"48f3762b-357a-41e2-a9c5-4d98c2941162"},"nav_id"]],["=",{"lib/uuid":"f040d95e-8c79-4e9e-888c-2b865dc9f977"},["field",{"base-type":"type/Text","lib/uuid":"5d95fc19-768a-483b-b2da-dbe0f213b186"},"idProducto"],["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Text","lib/uuid":"91a45edf-277e-4bc7-a111-f55f0f5ecf0e"},"nav_id_producto"]],["=",{"lib/uuid":"a708ca2a-1932-459c-9187-022dbfb9c416"},["field",{"base-type":"type/Integer","lib/uuid":"66661060-a8e8-4981-bb5a-899eed05ca93"},"NumeroLineaOrdenada"],["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Integer","lib/uuid":"f7780ed3-2530-4657-9e04-7d47fdfe449a"},"NumeroLineaOrdenada"]]],"stages":[{"lib/type":"mbql.stage/mbql","source-card":4493}],"lib/options":{"lib/uuid":"c7d804c1-9eb4-4139-8149-238a13ef748a"}},{"lib/type":"mbql/join","fields":[["field",{"lib/uuid":"95caba38-84e1-49e9-8c36-7657ec9a84be","base-type":"type/Integer","join-alias":"Tpv Orders Orderitem - orderitem_id","effective-type":"type/Integer"},16711]],"strategy":"left-join","alias":"Tpv Orders Orderitem - orderitem_id","conditions":[["=",{"lib/uuid":"ad4ddc6e-dd7c-4ae0-8f38-2bd910163169"},["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Integer","lib/uuid":"2d17ce82-bc7e-4676-82bf-d131ade7bde2"},"orderitem_id"],["field",{"lib/uuid":"472903e2-0376-4671-aed3-0ce4b9136ef7","base-type":"type/Integer","join-alias":"Tpv Orders Orderitem - orderitem_id","effective-type":"type/Integer"},16737]]],"stages":[{"lib/type":"mbql.stage/mbql","source-table":1555}],"lib/options":{"lib/uuid":"f87ba648-c9b0-4344-8ddf-12a28b424f45"}}],"expressions":[["coalesce",{"lib/uuid":"bcb133e6-a6de-40fd-9987-5dd8f8187a48","lib/expression-name":"Valor_tpv"},["field",{"join-alias":"Movimientos de venta de TPV con numero de linea - n_5fca956c","base-type":"type/Float","lib/uuid":"bf05677f-be4e-4b5c-905e-631b0bc0f1ff"},"valor_linea"],0],["abs",{"lib/uuid":"ab0840a8-9315-46c2-9d3e-7f33060e53e9","lib/expression-name":"diferencia"},["-",{"lib/uuid":"871c4e8f-3240-44bf-9a63-c81b062fd961"},["expression",{"effective-type":"type/Float","base-type":"type/Float","lib/uuid":"c22eda3e-1292-45b8-a894-28c456cd1d20"},"Valor_tpv"],["field",{"base-type":"type/Decimal","lib/uuid":"be4d79e6-d53d-44a0-9b05-ff3299643755"},"Base_imponible_linea"]]]],"source-card":4491}]},"id":4494,"legacy_query":"{\"database\":6,\"type\":\"query\",\"query\":{\"joins\":[{\"fields\":[[\"field\",\"orderitem_id\",{\"base-type\":\"type/Integer\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}],[\"field\",\"valor_linea\",{\"base-type\":\"type/Float\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}]],\"alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\",\"strategy\":\"left-join\",\"ident\":\"ZrzXxoi4zVXcaWNNb3xeX\",\"condition\":[\"and\",[\"=\",[\"field\",\"numeroDocumento\",{\"base-type\":\"type/Text\"}],[\"field\",\"nav_id\",{\"base-type\":\"type/Text\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}]],[\"=\",[\"field\",\"idProducto\",{\"base-type\":\"type/Text\"}],[\"field\",\"Products___product_id__nav_id\",{\"base-type\":\"type/Text\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}]],[\"=\",[\"field\",\"NumeroLineaOrdenada\",{\"base-type\":\"type/Integer\"}],[\"field\",\"NumeroLineaOrdenada\",{\"base-type\":\"type/Integer\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}]]],\"source-table\":\"card__4493\"},{\"ident\":\"WfdDp7SAlhOZuyUZVkwl7\",\"fields\":[[\"field\",16711,{\"base-type\":\"type/Integer\",\"join-alias\":\"Tpv Orders Orderitem - orderitem_id\"}]],\"strategy\":\"left-join\",\"alias\":\"Tpv Orders Orderitem - orderitem_id\",\"condition\":[\"=\",[\"field\",\"orderitem_id\",{\"base-type\":\"type/Integer\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}],[\"field\",16737,{\"base-type\":\"type/Integer\",\"join-alias\":\"Tpv Orders Orderitem - orderitem_id\"}]],\"source-table\":1555}],\"expressions\":{\"Valor_tpv\":[\"coalesce\",[\"field\",\"valor_linea\",{\"base-type\":\"type/Float\",\"join-alias\":\"Movimientos de venta de TPV con numero de linea - n_5fca956c\"}],0],\"diferencia\":[\"abs\",[\"-\",[\"expression\",\"Valor_tpv\",{\"base-type\":\"type/Float\"}],[\"field\",\"Base_imponible_linea\",{\"base-type\":\"type/Decimal\"}]]]},\"order-by\":[[\"desc\",[\"expression\",\"diferencia\",{\"base-type\":\"type/Float\"}]]],\"source-table\":\"card__4491\",\"expression-idents\":{\"Valor_tpv\":\"-OCO3_dv0NYJZbm9cgX0R\",\"diferencia\":\"I_q8nGsnz2Ccu_gOv1niv\"}}}","parameter_mappings":[],"can_manage_db":false,"display":"table","archived_directly":false,"entity_id":"WBue9vs_jLwvY-FLlegZc","collection_preview":true,"last-edit-info":{"id":301,"email":"api-key-user-e55e1da7-c8ea-4268-9faf-84343fd72150@api-key.invalid","first_name":"data_exploration","last_name":"","timestamp":"2026-07-01T14:26:55.137085Z"},"visualization_settings":{"table.pivot_column":"Anjana_Sales_Cr_Memo_Header___NumeroDocumento__corr_3c3ea85c","table.cell_column":"NumeroLineas"},"collection":{"authority_level":null,"description":null,"archived":false,"workspace_id":null,"slug":"ventas","archive_operation_id":null,"name":"VENTAS","is_remote_synced":false,"personal_owner_id":null,"type":null,"is_sample":false,"id":406,"archived_directly":null,"entity_id":"EMsdi8wENXf6riuJelXXz","location":"/400/","namespace":null,"is_personal":false,"created_at":"2025-07-17T22:44:53.718794Z"},"metabase_version":"v0.55.7 (dcea6a4)","parameters":[],"dashboard_id":null,"created_at":"2025-08-14T15:24:53.023407Z","parameter_usage_count":0,"public_uuid":null,"can_delete":false} \ No newline at end of file diff --git a/scratchpad/exf/cards.json b/scratchpad/exf/cards.json new file mode 100644 index 00000000..462bdd70 --- /dev/null +++ b/scratchpad/exf/cards.json @@ -0,0 +1 @@ +{"total": 12367, "canal": 12368, "pago": 12369, "matriz": 12370, "evolutivo": 12371} \ No newline at end of file diff --git a/scratchpad/exf/create.py b/scratchpad/exf/create.py new file mode 100644 index 00000000..9f6f7377 --- /dev/null +++ b/scratchpad/exf/create.py @@ -0,0 +1,42 @@ +import json, sys +sys.path.insert(0, "scratchpad/exf") +from build import api, BASE, CARDS, TAGS, dq + +COLLECTION = 583 # "Claude" (junto a 1094) + +CUR = {"number_style":"currency","currency":"EUR","currency_style":"symbol","decimals":0} + +def viz(kind): + if kind == "total": + return {"column_settings":{'["name","venta_web_eur"]':CUR}, + "scalar.field":"venta_web_eur"} + if kind == "canal": + return {"graph.dimensions":["canal"],"graph.metrics":["venta_eur"], + "graph.x_axis.title_text":"Canal","graph.y_axis.title_text":"Venta web (EUR)", + "column_settings":{'["name","venta_eur"]':CUR},"graph.show_values":True} + if kind == "pago": + return {"graph.dimensions":["forma_pago"],"graph.metrics":["venta_eur"], + "column_settings":{'["name","venta_eur"]':CUR},"graph.show_values":True} + if kind == "matriz": + return {"column_settings":{'["name","venta_eur"]':CUR}, + "table.columns":[ + {"name":"canal","enabled":True},{"name":"forma_pago","enabled":True}, + {"name":"venta_eur","enabled":True},{"name":"documentos","enabled":True}]} + if kind == "evolutivo": + return {"graph.dimensions":["mes","canal"],"graph.metrics":["venta_eur"], + "stackable.stack_type":"stacked","column_settings":{'["name","venta_eur"]':CUR}, + "graph.x_axis.title_text":"Mes","graph.y_axis.title_text":"Venta web (EUR)"} + return {} + +created = {} +for k, c in CARDS.items(): + body = {"name": c["name"], "display": c["display"], + "dataset_query": dq(c["sql"]), + "visualization_settings": viz(k), + "collection_id": COLLECTION} + r = api("POST", "/api/card", body) + created[k] = r["id"] + print(f"card {k}: id {r['id']} {c['name']}") + +json.dump(created, open("scratchpad/exf/cards.json","w")) +print("CARDS:", created) diff --git a/scratchpad/exf/dash.json b/scratchpad/exf/dash.json new file mode 100644 index 00000000..1e78f44d --- /dev/null +++ b/scratchpad/exf/dash.json @@ -0,0 +1 @@ +{"dashboard_id": 1143} \ No newline at end of file diff --git a/scratchpad/exf/dash.py b/scratchpad/exf/dash.py new file mode 100644 index 00000000..45f981d6 --- /dev/null +++ b/scratchpad/exf/dash.py @@ -0,0 +1,54 @@ +import json, sys +sys.path.insert(0, "scratchpad/exf") +from build import api + +C = json.load(open("scratchpad/exf/cards.json")) +COLLECTION = 583 + +# 1) crear dashboard vacio +dash = api("POST", "/api/dashboard", { + "name": "Venta Web por Canal y Forma de Pago (facturacion NAV / modelo 4494)", + "collection_id": COLLECTION, + "description": "Solo venta web (origen precaweb) tomada del modelo 4494 (SUM Base_imponible_linea, facturacion NAV neta), desglosada por canal (channel_id) y forma de pago (pago web vs pago tienda), segun las convenciones del dashboard 1094. Glass excluido. Default: YTD 2026.", +}) +DID = dash["id"] +print("dashboard id:", DID) + +# 2) parametros del dashboard +PARAMS = [ + {"id":"p_desde","name":"Fecha desde","slug":"fecha_desde","type":"date/single","default":"2026-01-01"}, + {"id":"p_hasta","name":"Fecha hasta","slug":"fecha_hasta","type":"date/single"}, + {"id":"p_centro","name":"Centro","slug":"centro","type":"string/=","sectionId":"string"}, + {"id":"p_ensena","name":"Ensena","slug":"ensena","type":"string/=","sectionId":"string"}, +] + +def mappings(cid): + return [ + {"parameter_id":"p_desde","card_id":cid,"target":["variable",["template-tag","fecha_desde"]]}, + {"parameter_id":"p_hasta","card_id":cid,"target":["variable",["template-tag","fecha_hasta"]]}, + {"parameter_id":"p_centro","card_id":cid,"target":["variable",["template-tag","centro"]]}, + {"parameter_id":"p_ensena","card_id":cid,"target":["variable",["template-tag","ensena"]]}, + ] + +# 3) layout (grid 24 col) +LAYOUT = { + "total": (0, 0, 6, 4), + "pago": (0, 6, 18, 4), + "canal": (4, 0, 12, 7), + "matriz": (4, 12, 12, 7), + "evolutivo": (11, 0, 24, 7), +} +dashcards = [] +neg = -1 +for k,(row,col,sx,sy) in LAYOUT.items(): + cid = C[k] + dashcards.append({ + "id": neg, "card_id": cid, "row": row, "col": col, "size_x": sx, "size_y": sy, + "series": [], "parameter_mappings": mappings(cid), "visualization_settings": {} + }) + neg -= 1 + +r = api("PUT", f"/api/dashboard/{DID}", {"dashcards": dashcards, "parameters": PARAMS}) +print("dashcards saved:", len(r.get("dashcards",[]))) +print("URL: https://reports.autingo.es/dashboard/%d" % DID) +json.dump({"dashboard_id":DID}, open("scratchpad/exf/dash.json","w")) diff --git a/scratchpad/va.parquet b/scratchpad/va.parquet new file mode 100644 index 0000000000000000000000000000000000000000..9cfffb0c6ad72d9087d60a2bc49028ce44c07690 GIT binary patch literal 3609 zcmb_f3v5&86}}F!6DNR@RM&OdtVAaDl406w$4(uZA+8;4U*m+t5WgUE?!&R2TwfbM z;y78-uCGzlj8Ju&+DVLUT`3GSD#XS#V62@OV^dqIYGNxD6QzX5)KwK@X}htV|Gy?U z1g2J+mH&1A^MB_%k9(x_&|V{1PEsW0Ayp(%M-bY|%N2xD(J@m&;NPX{uilAr==`U}q&eO4;4K(N-#oI*8pu zDQ4Fo%IwOkYfQGj5f@u%*>gbKV?F5n=_>@{IbB6QuJ(ZQC`4P8R$@?p%zmV1*#{LP z&k0sSp`Zr3-_UNFY7EV;-Mu-bs5KKijs*T$%d>r!1Jl`NMV(o(v%F*7 zcNhf3q~N^6Gsai^?B@^McV_waX>@<| z@8`sO?v<>cpZm)iWt}1P?L(cruCDu}*EjQ)x`}#*-yQ#JwlMa$sjB=LWfPS#UwS!X zXz9EE8-a%h;Q7Q4!#4&TlanXD_m#RDc>Y?$%r5&>;(-%K)m8AkP5b`N7oFpQE3+LA ztFp=P%(?Ajr!O2@&b?&pQeQDJ*FQb&+qZ4?jVG83$}48#%+5#teZYC`&!_f3x$ISC z8?`?Fr(ayYp)hp(;nUg2!P@k1UOenmO{1{ zIUhW{K|M(s-*B`!pSbaE1gYSc`hOu6z~_+#6_)tK`v@l^_s@Toos{aM+VOa9X(B58zcRJR}!0NCI*_n1F&Ry zy~jdmRT(}ONwA~}1P_*J%L@@UEpL^Hq?C;jV8$q?k)c8QrSJP2;*@kikxu zW~FFEXK2((Y$5^zDJP0>%4FGe7LF9&CsVL(ZNvKr+8ZbO;UEKsF?ytkJ0E5+9ubA` ze3{HEoGqk~JzY+U^GQLbkV~Wra~GLx8u3a*vaG;nS zWIhEQs#t_DkHnnxHX3m$+h)dbm`7qxTtWkdXu<$&ihk+v_ps2?ocRA}s^nu^Xz;en z+sq0PKAvF3g+3;^p$MNv@)9SW%SIFUaV8@jSxYnKq`g%Tzpz^4ZZI z*nlvKw#4=nm+*=ar*90|@waB;T*8qJZGg8b4WW_g!5D7eHt#{kOQGJNEPF2{`5l?N z#fvk!w}4JDo<>n{Isn5PLpg;w<@tnfhz$US$&BJlb)mYJx`%@PQCve^W3l!@ABFsj z2`+De^}CHiu|^}USUv<8P&e&`B4!433c-Neg6l@ISzuq_T6yfNknk0FlQ_b~p|0&r zq1$fGdxq#Z%3Dbdn?eEi7z??<7(-pTF1xwFNEGS=H0>(ZI{K{9aKoT&U3f+lGX_n> z3Y)bqXbN<(Y2Yn7(sTxfZGMb#i%6m-g8K+GAm}?VA$#^9+Tvb9^#C-|?PYLhao)VZ zE1)8&Q?5BA%HPyS?F)VY-iP`R_~DYtLx;jm2;bT#7$dV`x{GgBV wxY5Zn8K2NLrr7kBTqL`aPo-Ak#@twJyp3{8uJ33d2>Fj#QbiCw@K51?0fLk+p8x;= literal 0 HcmV?d00001 diff --git a/scratchpad/vm.parquet b/scratchpad/vm.parquet new file mode 100644 index 0000000000000000000000000000000000000000..14925fdb74ad44d42961391b6c85c315e7c69cec GIT binary patch literal 3064 zcmb_eU5Fdk6~2=7x4Zt!;!(78AH>uVc38(FY2{i*1* zBUKt%JGC z02=ck-&oLxf=5DV0)_|17>q+O{4mC096l1tgh)JuFev_j-FYfA%I>ghfb)0;5@vT$ zOV~{tE<4}E@yP^pLVNkfFShQycWaD)X&i(5sE@qVU2h2vk5lxPC*$8Zmhb!j^vQH~ z;_1|>UF7lHe|5t7`Ct2iw=euA>-&5B!))-*ofCck_wRzPeErn!_&0Yy*!4Yl<^8OG zk};9*-qkPr{?A^yj{@7@=XL{UUVqRZU;Or0yT{%*ePkEepZ_cyc>nahZ14y1-E82` zfBdBHdzx;bK;WPA{m{qqLlnAk>wY#E{ozC8|NW=G?uY)hAooLD=6XLU{NXSCARqmr z4@oIeOCw3~6Yz+iBm~m2Z%q;ryXht(Fp-TOo|C2vZ_bpy$Sj>)Sk|sqZ<|-X+KH0Q zly9n(LXkj6X=tWI1t3Sycq2YXliIH6H=CB-K-5ucobpCOJxyLQ?UjvZ#;HjvJaYxl z02Jn?rl&G7G!1wu6gWQRLQvi?7ry5Sf9HuU$3p*Gt4+;7xex{2g`iWtD04b66+;{Z z8x7;qBXMpX3g7j{UOg21hX*1ZY>+3m&3}({ba0^I(Mhmh`ogz;vG;))nzOVu`4l%~-&tqy%5`jc&X19TwKZOK~G z=$R;ONu~x0t7{mr>ey1-h9yJfW(&k*lE@mC<2zSj;R3D@bZvmUA7)k840UC{&gHdY zJ1rcK?pnIiR9y;Pv*ip89lMQrnVK!Bk}ZMnHmzCUt6OV$km z;OUz3x~AAzKXSZny48ja9ldGcO2@(4Q6vKwEA3`mvhB7mcWqMhZAb;Jv^B|Ywn>c) zU2aQl2bZYjNbPpBhXY*G+5<#7G5Z|z97E%M1EM3wB-j%44vHLR%jJvW1@|q9yfc0l zf9bV3mSr!&z~A#MJIiuwY>s8uSbmM@IBuW4hn4d~`^8JVyM~#d;AxIIyL9&KCMyh- zJOgm7<`i49SvIs>dR^cD-6cii?u3=sf~KIVJHs7$=N>= z%v3`bFT-B0tBRYQ63^;&(=gbdl=Zh{%VCR^nu!Lzsq)W4y` zpA_$4{-9>e;`${W*G3jAOie5|)cpLgW~(psa4!E7&r*$=k+#)by6v9fV1Cp@MXx5} zOf}IVxJo|Pt><%Fqjjt2E9;UNZ^%!~Q(BkI%DU>>?K;#IFqj(d8OV=PC>phdu_cM= zF6q_fdE7%=wM4E%dS}kqt8+swlpRSd#?^d<)LKireXE!iIBVJ&^h*bP9O(TNUJDkN z0@;z13OR#nRvaZ^T$6R&OMozI%C3)T_lICt-b|yTH#ng2li+W%0dd z*}}jVUvoSJtmNRn!;GimGCUgRL6|QPB~LCr5wRJ+3*ecoi^WyBT3(gNbAca%9^MbX z*v^*lM7A!@?cwom5Mm#}y9}P3+hcgs!k$0Nk;niFj}_q7Sgyw|U>Dd-OdxV>18dx% zgg;qg7kH2GJt5&-e(;bL2Cmrb;$w+re~cp0mel@fSF_J3t=1Xx2uBBxY}9>zr!vzB Pxqs+)V+bw5|NQ?3tH?r7 literal 0 HcmV?d00001