{"id":6055,"date":"2018-12-01T22:08:55","date_gmt":"2018-12-02T06:08:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6055"},"modified":"2025-06-13T18:44:58","modified_gmt":"2025-06-14T01:44:58","slug":"json-to-insights-fast-and-easy","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/json-to-insights-fast-and-easy\/","title":{"rendered":"De JSON a Insights: R\u00e1pido y f\u00e1cil"},"content":{"rendered":"<p>Coautor:  Sitaram Vemulapalli, Ingeniero Principal, Couchbase R&amp;D.<\/p>\n<blockquote><p><span style=\"font-weight: 400;\">\"La respuesta, amigo m\u00edo, se esconde en JSON\" - Bob Dylan<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Hay muchos <\/span><a href=\"https:\/\/catalog.data.gov\/dataset?res_format=JSON\"><span style=\"font-weight: 400;\">p\u00fablico<\/span><\/a><span style=\"font-weight: 400;\"> conjuntos de datos JSON y luego se\u00a0<\/span><a href=\"https:\/\/github.com\/jdorfman\/awesome-json-datasets\"><span style=\"font-weight: 400;\">impresionante<\/span><\/a><span style=\"font-weight: 400;\"> Conjuntos de datos JSON. Todas las empresas, incluida la suya, han almacenado muchos datos en JSON: el resultado de encuestas, campa\u00f1as y foros. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hay muchas maneras de conseguir la piel del JSON. Usted puede escribir el programa Python para cada informe, la visualizaci\u00f3n que desea hacer.  O bien, puede utilizar <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/index.html\"><span style=\"font-weight: 400;\">N1QL<\/span><\/a><span style=\"font-weight: 400;\"> (SQL para JSON) a <\/span><a href=\"https:\/\/www.slideshare.net\/LukasEder1\/how-modern-sql-databases-come-up-with-algorithms-that-you-would-have-never-dreamed-of?qid=8d7fc709-07f7-4af5-848a-a576af4b0ea0&amp;v=&amp;b=&amp;from_search=2\"><span style=\"font-weight: 400;\">generar el algoritmo adecuado para usted<\/span><\/a><span style=\"font-weight: 400;\">\u00a0para analizar datos JSON.<\/span><span style=\"font-weight: 400;\">\u00a0En este art\u00edculo, le mostramos c\u00f3mo utilizar N1QL para extraer informaci\u00f3n r\u00e1pidamente.  Tambi\u00e9n utilizamos dos funciones que aparecer\u00e1n en la pr\u00f3xima versi\u00f3n: Common Table Expression (CTE) y Window Functions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Objetivo: Utilizar el conjunto de datos JSON p\u00fablico de los resultados del US Open de golf para crear una tabla de clasificaci\u00f3n simple, un ranking, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tres cosas que har\u00e1s como parte de esto:<\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\">Ingerir los datos en Couchbase f\u00e1cilmente.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Comienza a obtener el valor de estos datos JSON inmediatamente.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">D\u00e9 forma al JSON para generar r\u00e1pidamente informes \u00fatiles utilizando las nuevas funciones.<\/span><\/li>\n<\/ol>\n<p>Fuente de datos:\u00a0<a href=\"https:\/\/github.com\/jackschultz\/usopen\">https:\/\/github.com\/jackschultz\/usopen<\/a><\/p>\n<p>Las consultas de este post tambi\u00e9n est\u00e1n disponibles en:\u00a0<a href=\"https:\/\/github.com\/keshavmr\/usopen-golf-queries\">https:\/\/github.com\/keshavmr\/usopen-golf-queries<\/a><\/p>\n<p><b>Estructura del repositorio de datos:<\/b><span style=\"font-weight: 400;\"> Este repositorio de GitHub <\/span><a href=\"https:\/\/github.com\/jackschultz\/usopen\"><span style=\"font-weight: 400;\">https:\/\/github.com\/jackschultz\/usopen<\/span><\/a><span style=\"font-weight: 400;\"> contiene US Open golf -2018 datos.  Para cada hoyo, como un documento separado para cada d\u00eda.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6058\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM-185x300.png\" alt=\"\" width=\"326\" height=\"529\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM-185x300.png 185w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM-632x1024.png 632w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM-300x486.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM-12x20.png 12w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-25-at-3.29.59-PM.png 642w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Cada documento tiene esta estructura.  Este es el documento para el hoyo 1 del d\u00eda 1.  La Ps archivada tiene la lista de jugadores, cada uno con un ID \u00fanico. \u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-6063\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-11-23-at-11.37.48-PM-187x300.png\" alt=\"\" width=\"187\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-23-at-11.37.48-PM-187x300.png 187w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-23-at-11.37.48-PM-300x483.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-23-at-11.37.48-PM-12x20.png 12w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-23-at-11.37.48-PM.png 572w\" sizes=\"auto, (max-width: 187px) 100vw, 187px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A continuaci\u00f3n se presentan las estad\u00edsticas de juego de cada jugador, golpe a golpe.   Los jugadores se emparejan con las puntuaciones utilizando el campo ID \u00fanico para el jugador.\u00a0\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6075\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-236x300.png\" alt=\"\" width=\"349\" height=\"444\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-236x300.png 236w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-806x1024.png 806w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-768x976.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-300x381.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM-16x20.png 16w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-01-at-9.37.40-PM.png 812w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><\/p>\n<p><b>Empieza a obtener informaci\u00f3n:<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Antes de iniciar la consulta, cree un \u00edndice primario en el bucket.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">CREAR \u00cdNDICE PRIMARIO EN usopen;<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Tarea 1:<\/strong> \u00a0\u00a0Crea un informe con las puntuaciones de los jugadores por rondas y el total final.<\/span><\/p>\n<p>Despu\u00e9s de jugar con JSON de abajo hacia arriba, llegamos a esta consulta. La explicaci\u00f3n est\u00e1 despu\u00e9s de la consulta.<\/p>\n<pre class=\"\">WITH d AS (\r\n  SELECT\r\n    pl.hnum AS holedn,\r\n    pl.ps.Nat AS country,\r\n    (pl.ps.FN || \" \" || pl.ps.LN) AS name,\r\n    pl.ps.ID AS ID,\r\n    array_length(hps.Sks) AS score,\r\n    hpl.hole AS `hole`,\r\n    hpl.day AS `day`\r\n  FROM\r\n    (\r\n      SELECT\r\n        meta(usopen).id AS hnum,\r\n        ps\r\n      FROM\r\n        usopen USE keys \"holes:1:1\" unnest Ps AS ps\r\n    ) pl\r\n    INNER JOIN (\r\n      SELECT\r\n        TONUMBER(split(meta(usopen).id, \":\") [1]) AS `hole`,\r\n        TONUMBER(split(meta(usopen).id, \":\") [2]) AS `day`,\r\n        hps\r\n      FROM\r\n        usopen unnest Rs AS rs UNNEST rs.Hs AS hs UNNEST hs.HPs AS hps\r\n    ) hpl ON (pl.ps.ID = hps.ID)\r\n)\r\nSELECT\r\n  d.name,\r\n  SUM(\r\n    CASE WHEN d.day = 1 THEN d.score ELSE 0 END\r\n  ) R1,\r\n  SUM(\r\n    CASE WHEN d.day = 2 THEN d.score ELSE 0 END\r\n  ) R2,\r\n  SUM(\r\n    CASE WHEN d.day = 3 THEN d.score ELSE 0 END\r\n  ) R3,\r\n  SUM(\r\n    CASE WHEN d.day = 4 THEN d.score ELSE 0 END\r\n  ) R4,\r\n  SUM(d.score) T\r\nFROM\r\n  d\r\nGROUP BY\r\n  d.name\r\nORDER BY\r\n  d.name<\/pre>\n<p><span style=\"font-weight: 400;\">Resultados tabulares (en forma tabular, desde el banco de trabajo de consultas de Couchbase)<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6064\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-11-28-at-3.38.36-PM-300x190.png\" alt=\"\" width=\"630\" height=\"399\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-28-at-3.38.36-PM-300x190.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-28-at-3.38.36-PM-768x488.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-28-at-3.38.36-PM-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-28-at-3.38.36-PM.png 838w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Veamos la consulta bloque por bloque.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Mira la cl\u00e1usula WITH d.  La sentencia desenreda el JSON de datos PER-d\u00eda-PER-agujero-disparo-a-disparo a simples valores escalares.<\/span><\/p>\n<pre class=\"theme:github tab-size:2 whitespace-before:2 whitespace-after:2 lang:js decode:true\">{\r\n   \"d\": {\r\n      \"ID\": \"37189\",\r\n      \"country\": \"USA\",\r\n      \"day\": 1,\r\n      \"hole\": 10,\r\n      \"holedn\": \"holes:1:1\",\r\n      \"name\": \"Harold Varner\",\r\n      \"score\": 6\r\n    }\r\n\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Holedn es la clave del documento - hole-day-number<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pa\u00eds es la nacionalidad del jugador<\/span><\/p>\n<p><span style=\"font-weight: 400;\">ID es el identificador \u00fanico del jugador.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">El hoyo y el d\u00eda son obvios y la puntuaci\u00f3n es la puntuaci\u00f3n del jugador en ese hoyo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En la cl\u00e1usula FROM de la sentencia SELECT, pl es la lista completa de jugadores extra\u00edda del documento para el primer d\u00eda, primer hoyo (hoyos:1:1).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Rs es el resultado de los jugadores, golpe a golpe, hoyo a hoyo.  En primer lugar, anulamos ese array un par de veces para proyectar los detalles de cada hoyo y la puntuaci\u00f3n de ese hoyo, determinada por array_length(hps.Sks).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Una vez que tenemos la puntuaci\u00f3n hoyo por hoyo, es f\u00e1cil escribir la consulta final para agregar por jugador y por d\u00eda.<\/span><\/p>\n<pre class=\"theme:github wrap:true scroll:true tab-size:2 whitespace-before:2 whitespace-after:02 lang:tsql decode:true\">select d.name,\r\n       sum(case when d.day = 1 then d.score else 0 end) R1,\r\n       sum(case when d.day = 2 then d.score else 0 end) R2,\r\n       sum(case when d.day = 3 then d.score else 0 end) R3,\r\n       sum(case when d.day = 4 then d.score else 0 end) R4,\r\n       sum(d.score) T\r\nfrom d   \r\ngroup by d.name \r\norder by d.name\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">**La cl\u00e1usula WITH es la caracter\u00edstica de expresi\u00f3n de tabla com\u00fan (CTE) en la pr\u00f3xima versi\u00f3n de Mad-Hatter. La forma antigua de hacer esto en Couchbase 5.5 o inferior es usando la cl\u00e1usula LET.  Publica la pregunta en el foro de Couchbase si necesitas ayuda aqu\u00ed).<\/span><\/p>\n<h5><span style=\"font-weight: 400;\"><strong>Tarea 2:<\/strong> Ahora, crea la tabla de clasificaci\u00f3n completa y a\u00f1ade el bot\u00f3n <\/span><a href=\"https:\/\/www.pga.com\/events\/usopen\/us-open-cut-rule-explained-who-makes-weekend\"><span style=\"font-weight: 400;\">CORTE<\/span><\/a><span style=\"font-weight: 400;\"> informaci\u00f3n.  Los golfistas eliminados no jugar\u00e1n la tercera ni la cuarta ronda. Usamos esta informaci\u00f3n para determinar los jugadores que han sido eliminados.<\/span><\/h5>\n<p><span style=\"font-weight: 400;\"><strong>Consulta 2.<\/strong> \u00a0Toma la consulta anterior y n\u00f3mbrala como una tabla com\u00fan dx y luego a\u00f1ade la siguiente expresi\u00f3n para determinar ese corte.<\/span><\/p>\n<pre class=\"theme:github wrap:true scroll:true tab-size:2 whitespace-before:2 whitespace-after:2 lang:tsql decode:true\">(\r\n\t\tCASE \r\n\t\t\tWHEN (\r\n\t\t\t\t\td2.R1 = 0\r\n\t\t\t\t\tOR d2.R2 = 0\r\n\t\t\t\t\tOR d2.R3 = 0\r\n\t\t\t\t\tOR d2.R4 = 0\r\n\t\t\t\t\t)\r\n\t\t\t\tTHEN \"CUT\"\r\n\t\t\tELSE MISSING\r\n\t\t\tEND\r\n\t\t) AS CUT<\/pre>\n<p><span style=\"font-weight: 400;\">Aqu\u00ed est\u00e1 la consulta completa:<\/span><\/p>\n<pre class=\"\">WITH dy AS (\r\n  SELECT\r\n    pl.hnum AS holedn,\r\n    pl.ps.Nat AS country,(pl.ps.FN || \" \" || pl.ps.LN) AS name,\r\n    pl.ps.ID AS ID,\r\n    array_length(hps.Sks) AS score,\r\n    hpl.hole AS `hole`,\r\n    hpl.day AS `day`\r\n  FROM\r\n    (\r\n      SELECT\r\n        meta(usopen).id AS hnum,\r\n        ps\r\n      FROM\r\n        usopen USE keys \"holes:1:1\" unnest Ps AS ps\r\n    ) pl\r\n    INNER JOIN (\r\n      SELECT\r\n        TONUMBER(split(meta(usopen).id, \":\") [1]) AS `hole`,\r\n        TONUMBER(split(meta(usopen).id, \":\") [2]) AS `day`,\r\n        hps\r\n      FROM\r\n        usopen unnest Rs AS rs unnest rs.Hs AS hs unnest hs.HPs AS hps\r\n    ) hpl ON (pl.ps.ID = hps.ID)\r\n),\r\ndx AS (\r\n  SELECT\r\n    d.name,\r\n    sum(\r\n      CASE WHEN d.day = 1 THEN d.score ELSE 0 END\r\n    ) R1,\r\n    sum(\r\n      CASE WHEN d.day = 2 THEN d.score ELSE 0 END\r\n    ) R2,\r\n    sum(\r\n      CASE WHEN d.day = 3 THEN d.score ELSE 0 END\r\n    ) R3,\r\n    sum(\r\n      CASE WHEN d.day = 4 THEN d.score ELSE 0 END\r\n    ) R4,\r\n    sum(d.score) T\r\n  FROM\r\n    dy AS d\r\n  GROUP BY\r\n    d.name\r\n  ORDER BY\r\n    d.name\r\n)\r\nSELECT\r\n  d2.name,\r\n  d2.R1,\r\n  d2.R2,\r\n  d2.R3,\r\n  d2.R4,\r\n  d2.T,(\r\n    CASE WHEN (\r\n      d2.R1 = 0\r\n      OR d2.R2 = 0\r\n      OR d2.R3 = 0\r\n      OR d2.R4 = 0\r\n    ) THEN \"CUT\" ELSE MISSING END\r\n  ) AS CUT\r\nFROM\r\n  dx AS d2\r\nORDER BY\r\n  CUT ASC,\r\n  d2.T ASC<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6065\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-11-29-at-10.47.56-PM-300x202.png\" alt=\"\" width=\"616\" height=\"415\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-10.47.56-PM-300x202.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-10.47.56-PM-768x517.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-10.47.56-PM-20x13.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-10.47.56-PM.png 888w\" sizes=\"auto, (max-width: 616px) 100vw, 616px\" \/><\/p>\n<h5><strong>Tarea 3: Determinar los ganadores.<\/strong><\/h5>\n<p><span style=\"font-weight: 400;\">Tenemos que clasificar a los jugadores en funci\u00f3n de la puntuaci\u00f3n total para determinar qui\u00e9n ha ganado el torneo.  Las clasificaciones se omiten si hay empates en las puntuaciones. C\u00f3mo hacerlo en SQL <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/on-par-with-window-functions-in-n1ql\/\"><span style=\"font-weight: 400;\">sin funciones de ventana es caro<\/span><\/a><span style=\"font-weight: 400;\">. Aqu\u00ed, escribimos la consulta utilizando la funci\u00f3n de ventana RANK().  Las funciones de ventana son una caracter\u00edstica en N1QL en la pr\u00f3xima versi\u00f3n (Mad-Hatter)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Consulta 3: \u00a0<\/span><\/p>\n<pre class=\"\">WITH dy\r\nAS (\r\n\tSELECT pl.hnum AS holedn\r\n\t\t,pl.ps.Nat AS country\r\n\t\t,(pl.ps.FN || \" \" || pl.ps.LN) AS name\r\n\t\t,pl.ps.ID AS ID\r\n\t\t,array_length(hps.Sks) AS score\r\n\t\t,hpl.hole AS `hole`\r\n\t\t,hpl.day AS `day`\r\n\tFROM (\r\n\t\tSELECT meta(usopen).id AS hnum\r\n\t\t\t,ps\r\n\t\tFROM usopen USE keys \"holes:1:1\" unnest Ps AS ps\r\n\t\t) pl\r\n\tINNER JOIN (\r\n\t\tSELECT TONUMBER(split(meta(usopen).id, \":\") [1]) AS `hole`\r\n\t\t\t,TONUMBER(split(meta(usopen).id, \":\") [2]) AS `day`\r\n\t\t\t,hps\r\n\t\tFROM usopen unnest Rs AS rs unnest rs.Hs AS hs unnest hs.HPs AS hps\r\n\t\t) hpl ON (pl.ps.ID = hps.ID)\r\n\t)\r\n\t,dx\r\nAS (\r\n\tSELECT d.name\r\n\t\t,sum(CASE \r\n\t\t\t\tWHEN d.day = 1\r\n\t\t\t\t\tTHEN d.score\r\n\t\t\t\tELSE 0\r\n\t\t\t\tEND) R1\r\n\t\t,sum(CASE \r\n\t\t\t\tWHEN d.day = 2\r\n\t\t\t\t\tTHEN d.score\r\n\t\t\t\tELSE 0\r\n\t\t\t\tEND) R2\r\n\t\t,sum(CASE \r\n\t\t\t\tWHEN d.day = 3\r\n\t\t\t\t\tTHEN d.score\r\n\t\t\t\tELSE 0\r\n\t\t\t\tEND) R3\r\n\t\t,sum(CASE \r\n\t\t\t\tWHEN d.day = 4\r\n\t\t\t\t\tTHEN d.score\r\n\t\t\t\tELSE 0\r\n\t\t\t\tEND) R4\r\n\t\t,sum(d.score) T\r\n\tFROM dy AS d\r\n\tGROUP BY d.name\r\n\tORDER BY d.name\r\n\t)\r\nSELECT d2.name\r\n\t,d2.R1\r\n\t,d2.R2\r\n\t,d2.R3\r\n\t,d2.R4\r\n\t,d2.T\r\n\t,RANK() OVER (ORDER BY d2.T + CUT) AS Rank\r\nFROM dx AS d2 \r\nLET CUT = (\r\n\t\tCASE \r\n\t\t\tWHEN (\r\n\t\t\t\t\td2.R1 = 0\r\n\t\t\t\t\tOR d2.R2 = 0\r\n\t\t\t\t\tOR d2.R3 = 0\r\n\t\t\t\t\tOR d2.R4 = 0\r\n\t\t\t\t\t)\r\n\t\t\t\tTHEN 1000\r\n\t\t\tELSE 0\r\n\t\t\tEND\r\n\t\t)\r\nORDER BY Rank<\/pre>\n<p><span style=\"font-weight: 400;\">F\u00edjese en que faltan los puestos 4, 8, 9, 10 y 11 debido a los empates.<\/span><\/p>\n<h5><strong>Tarea 4: <\/strong><span style=\"font-weight: 400;\">Ahora, vamos a averiguar c\u00f3mo le fue a cada jugador despu\u00e9s de la ronda1, ronda2, ronda3 en comparaci\u00f3n con la ronda final.  Utilizando las funciones de ventana, resulta tan f\u00e1cil como hacer desaparecer los malvaviscos cubiertos de chocolate. <\/span><\/h5>\n<p><span style=\"font-weight: 400;\"><strong>Consulta 4:<\/strong> Utilice la misma funci\u00f3n RANK(), ordenando por la puntuaci\u00f3n de cada d\u00eda (d\u00eda1, d\u00eda1+d\u00eda2, d\u00eda1+d\u00eda2+d\u00eda3) en lugar de s\u00f3lo por la puntuaci\u00f3n final.\u00a0<\/span><\/p>\n<pre class=\"\">WITH dy AS (\r\n  SELECT\r\n    pl.hnum AS holedn,\r\n    pl.ps.Nat AS country,(pl.ps.FN || \" \" || pl.ps.LN) AS name,\r\n    pl.ps.ID AS ID,\r\n    array_length(hps.Sks) AS score,\r\n    hpl.hole AS `hole`,\r\n    hpl.day AS `day`\r\n  FROM\r\n    (\r\n      SELECT\r\n        meta(usopen).id AS hnum,\r\n        ps\r\n      FROM\r\n        usopen USE keys \"holes:1:1\" unnest Ps AS ps\r\n    ) pl\r\n    INNER JOIN (\r\n      SELECT\r\n        TONUMBER(split(meta(usopen).id, \":\") [1]) AS `hole`,\r\n        TONUMBER(split(meta(usopen).id, \":\") [2]) AS `day`,\r\n        hps\r\n      FROM\r\n        usopen unnest Rs AS rs unnest rs.Hs AS hs unnest hs.HPs AS hps\r\n    ) hpl ON (pl.ps.ID = hps.ID)\r\n),\r\ndx AS (\r\n  SELECT\r\n    d.name,\r\n    sum(\r\n      CASE WHEN d.day = 1 THEN d.score ELSE 0 END\r\n    ) R1,\r\n    sum(\r\n      CASE WHEN d.day = 2 THEN d.score ELSE 0 END\r\n    ) R2,\r\n    sum(\r\n      CASE WHEN d.day = 3 THEN d.score ELSE 0 END\r\n    ) R3,\r\n    sum(\r\n      CASE WHEN d.day = 4 THEN d.score ELSE 0 END\r\n    ) R4,\r\n    sum(d.score) T\r\n  FROM\r\n    dy AS d\r\n  GROUP BY\r\n    d.name\r\n  ORDER BY\r\n    d.name\r\n)\r\nSELECT\r\n  d2.name,\r\n  d2.R1,\r\n  d2.R2,\r\n  d2.R3,\r\n  d2.R4,\r\n  d2.T,\r\n  DENSE_RANK() OVER (\r\n    ORDER BY\r\n      d2.T + CUT\r\n  ) AS rankMoney,\r\n  RANK() OVER (\r\n    ORDER BY\r\n      d2.T + CUT\r\n  ) AS rankFinal,\r\n  RANK() OVER (\r\n    ORDER BY\r\n      d2.R1\r\n  ) AS round1rank,\r\n  RANK() OVER (\r\n    ORDER BY\r\n      d2.R1 + d2.R2\r\n  ) AS round2rank,\r\n  RANK() OVER (\r\n    ORDER BY\r\n      d2.R1 + d2.R2 + d2.R3 + CUT\r\n  ) AS round3rank\r\nFROM\r\n  dx AS d2 LET CUT = (\r\n    CASE WHEN (\r\n      d2.R1 = 0\r\n      OR d2.R2 = 0\r\n      OR d2.R3 = 0\r\n      OR d2.R4 = 0\r\n    ) THEN 1000 ELSE 0 END\r\n  )\r\nORDER BY\r\n  rankFinal,\r\n  round1rank,\r\n  round2rank,\r\n  round3rank<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6068\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-11-29-at-11.18.45-PM-300x112.png\" alt=\"\" width=\"740\" height=\"276\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-11.18.45-PM-300x112.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-11.18.45-PM-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-11-29-at-11.18.45-PM.png 1526w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ahora puedes ver c\u00f3mo subieron o bajaron los jugadores cada d\u00eda.<\/span><\/p>\n<h5><strong>Tarea 5: Crear el cuadro de mando completo para el l\u00edder utilizando las estad\u00edsticas b\u00e1sicas tiro a tiro.<\/strong><\/h5>\n<p><span style=\"font-weight: 400;\"><strong>Consulta 5:<\/strong> \u00a0Brooks Koepka es el ganador final del US open.   Obtengamos sus puntuaciones, hoyo por hoyo y obtengamos las puntuaciones acumuladas para \u00e9l por ronda.  Observa c\u00f3mo la simple SUM() y el agregado COUNT() funcionan como una funci\u00f3n ventana con la cl\u00e1usula OVER().<\/span><\/p>\n<pre class=\"\">SUM(d2.score) OVER (PARTITION BY d2.day ORDER BY d2.hole) hst<\/pre>\n<p><span style=\"font-weight: 400;\">Primero se divide la puntuaci\u00f3n por d\u00eda y luego por hoyo - especificado por la cl\u00e1usula PARTITION BY, en el orden de los hoyos 1-18. A continuaci\u00f3n, la SUMA suma las puntuaciones hasta el momento.<\/span><\/p>\n<pre class=\"\">SUM(d3.score) OVER (ORDER BY d3.day,d3.hole) ToTScore<\/pre>\n<p><span style=\"font-weight: 400;\">Esta funci\u00f3n SUM() simplemente suma la puntuaci\u00f3n desde el d\u00eda 1, hoyo 1 hasta el d\u00eda 4, hoyo 18 - esto es especificado por el ORDER BY d3.day, d3.hole dentro de la cl\u00e1usula OVER()..  El campo ToTScore muestra los cortos totales del torneo por Koepka en cada hoyo.<\/span><\/p>\n<pre class=\"\">WITH dy AS (\r\n  SELECT\r\n    pl.hnum AS holedn,\r\n    pl.ps.Nat AS country,(pl.ps.FN || \" \" || pl.ps.LN) AS name,\r\n    pl.ps.ID AS ID,\r\n    array_length(hps.Sks) AS score,\r\n    hpl.hole AS `hole`,\r\n    hpl.day AS `day`,\r\n    hpl.Par AS Par\r\n  FROM\r\n    (\r\n      SELECT\r\n        meta(usopen).id AS hnum,\r\n        ps\r\n      FROM\r\n        usopen USE keys \"holes:1:1\" unnest Ps AS ps\r\n      WHERE\r\n        ps.LN = \"Koepka\"\r\n    ) pl\r\n    INNER JOIN (\r\n      SELECT\r\n        TONUMBER(split(meta(usopen).id, \":\") [1]) AS `hole`,\r\n        TONUMBER(split(meta(usopen).id, \":\") [2]) AS `day`,\r\n        hs.Par,\r\n        hps\r\n      FROM\r\n        usopen unnest Rs AS rs unnest rs.Hs AS hs unnest hs.HPs AS hps\r\n    ) hpl ON (pl.ps.ID = hps.ID)\r\n),\r\ndx AS (\r\n  SELECT\r\n    d.name,\r\n    d.day,\r\n    d.score,\r\n    d.hole,\r\n    d.Par\r\n  FROM\r\n    dy AS d\r\n  ORDER BY\r\n    d.name\r\n),\r\ndz AS (\r\n  SELECT\r\n    d2.day,\r\n    d2.hole,\r\n    d2.score,\r\n    SUM(d2.score) OVER (\r\n      PARTITION BY d2.day\r\n      ORDER BY\r\n        d2.hole\r\n    ) hst,\r\n    d2.Par,\r\n    SUM(d2.Par) OVER (\r\n      PARTITION BY d2.day\r\n      ORDER BY\r\n        d2.hole\r\n    ) hpr\r\n  FROM\r\n    dx AS d2 LET CUT = (\r\n      CASE WHEN (\r\n        d2.R1 = 0\r\n        OR d2.R2 = 0\r\n        OR d2.R3 = 0\r\n        OR d2.R4 = 0\r\n      ) THEN 1000 ELSE 0 END\r\n    )\r\n  ORDER BY\r\n    d2.day,\r\n    d2.hole\r\n)\r\nSELECT\r\n  d3.Par,\r\n  d3.day,\r\n  d3.hole,\r\n  d3.hst,\r\n  d3.score,(d3.hst - d3.hpr) ToPar,\r\n  sum(d3.score) OVER (\r\n    ORDER BY\r\n      d3.day,\r\n      d3.hole\r\n  ) ToTScore,\r\n  count(1) OVER (\r\n    ORDER BY\r\n      d3.day,\r\n      d3.hole\r\n  ) HoleNum\r\nFROM\r\n  dz AS d3<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6077 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/12\/Screen-Shot-2018-12-02-at-11.54.48-AM-300x207.png\" alt=\"\" width=\"691\" height=\"477\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-02-at-11.54.48-AM-300x207.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-02-at-11.54.48-AM-768x531.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-02-at-11.54.48-AM-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/Screen-Shot-2018-12-02-at-11.54.48-AM.png 828w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>Co-author:\u00a0 Sitaram Vemulapalli, Principal Engineer, Couchbase R&amp;D. \u201cThe answer my friend is hiding in JSON&#8221; &#8211; Bob Dylan There are a lot of public JSON datasets and then is\u00a0awesome JSON datasets. Every company, including yours, has stored a lot of [&hellip;]<\/p>","protected":false},"author":55,"featured_media":6074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2294,1816,1819,1812],"tags":[1261,1725],"ppma_author":[8929],"class_list":["post-6055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-analytics","category-couchbase-server","category-data-modeling","category-n1ql-query","tag-json","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JSON to Insights: Fast and Easy - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/json-to-insights-fast-and-easy\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JSON to Insights: Fast and Easy\" \/>\n<meta property=\"og:description\" content=\"Co-author:\u00a0 Sitaram Vemulapalli, Principal Engineer, Couchbase R&amp;D. \u201cThe answer my friend is hiding in JSON&#8221; &#8211; Bob Dylan There are a lot of public JSON datasets and then is\u00a0awesome JSON datasets. Every company, including yours, has stored a lot of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/json-to-insights-fast-and-easy\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-02T06:08:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:44:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"JSON to Insights: Fast and Easy\",\"datePublished\":\"2018-12-02T06:08:55+00:00\",\"dateModified\":\"2025-06-14T01:44:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/\"},\"wordCount\":883,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png\",\"keywords\":[\"JSON\",\"NoSQL Database\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Analytics\",\"Couchbase Server\",\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/\",\"name\":\"JSON to Insights: Fast and Easy - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png\",\"datePublished\":\"2018-12-02T06:08:55+00:00\",\"dateModified\":\"2025-06-14T01:44:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png\",\"width\":1000,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JSON to Insights: Fast and Easy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, holds eleven US patents and has four US patents pending.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JSON to Insights: Fast and Easy - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/json-to-insights-fast-and-easy\/","og_locale":"es_MX","og_type":"article","og_title":"JSON to Insights: Fast and Easy","og_description":"Co-author:\u00a0 Sitaram Vemulapalli, Principal Engineer, Couchbase R&amp;D. \u201cThe answer my friend is hiding in JSON&#8221; &#8211; Bob Dylan There are a lot of public JSON datasets and then is\u00a0awesome JSON datasets. Every company, including yours, has stored a lot of [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/json-to-insights-fast-and-easy\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-12-02T06:08:55+00:00","article_modified_time":"2025-06-14T01:44:58+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png","type":"image\/png"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"JSON to Insights: Fast and Easy","datePublished":"2018-12-02T06:08:55+00:00","dateModified":"2025-06-14T01:44:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/"},"wordCount":883,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png","keywords":["JSON","NoSQL Database"],"articleSection":["Best Practices and Tutorials","Couchbase Analytics","Couchbase Server","Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/","url":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/","name":"JSON to Insights: Fast and Easy - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png","datePublished":"2018-12-02T06:08:55+00:00","dateModified":"2025-06-14T01:44:58+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/12\/json-insights.png","width":1000,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JSON to Insights: Fast and Easy"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy es Vicepresidente de Couchbase R&amp;D. Anteriormente, estuvo en MapR, IBM, Informix, Sybase, con m\u00e1s de 20 a\u00f1os de experiencia en dise\u00f1o y desarrollo de bases de datos. Dirigi\u00f3 el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement en IBM. Keshav es licenciado en Inform\u00e1tica e Ingenier\u00eda por la Universidad de Mysore (India), es titular de once patentes estadounidenses y tiene cuatro pendientes.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy es Vicepresidente de Couchbase R&amp;D. Anteriormente, estuvo en MapR, IBM, Informix, Sybase, con m\u00e1s de 20 a\u00f1os de experiencia en dise\u00f1o y desarrollo de bases de datos. Dirigi\u00f3 el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement en IBM. Keshav es licenciado en Inform\u00e1tica e Ingenier\u00eda por la Universidad de Mysore (India), es titular de diez patentes estadounidenses y tiene tres pendientes."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=6055"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/6074"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=6055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=6055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=6055"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=6055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}