es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear un gráfico de barras para un arreglo de objetos anidados en Kibana con Vega.

Tengo un problema para dibujar un gráfico con Vega en Kibana para mis datos.
Mis datos son los siguientes:

{
    "took": 10,
    "timed_out": false,
    "hits": {
        "hits": [
            {
                "_index": "request_index",
                "_id": "eaae227e-cf8f-411d-a8b3-0d66595d8730",
                "_source": {
                    "creationDate": "2021-12-04T13:03:13.186Z",
                    "requests": [
                        {
                            "searchEngine": "Google",
                            "execTime": 235
                        },
                        {
                            "searchEngine": "Bing",
                            "execTime": 952
                        }
                    ]
                }
            },
            {
                "_index": "request_index",
                "_id": "ac03a6de-23af-4e2d-9315-a36a82ffd251",
                "_source": {
                    "creationDate": "2021-11-04T13:03:13.186Z",
                    "requests": [
                        {
                            "searchEngine": "Yahoo",
                            "execTime": 75
                        },
                        {
                            "searchEngine": "Google",
                            "execTime": 145
                        },
                        {
                            "searchEngine": "Bing",
                            "execTime": 170
                        }
                    ]
                }
            }
        ]
    }
}

Quiero dibujar un gráfico de barras para el promedio de execTime por searchEngine de la siguiente manera:

Ejemplo de gráfico

También quiero el promedio histórico de execTime y dividir los gráficos por searchEngine.

¿Alguien puede ayudarme?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    ¡Hola!

    Para dibujar un gráfico de barras para el tiempo de ejecución promedio por motor de búsqueda, puedes usar la visualización Vega en Kibana. Aquí tienes los pasos para lograrlo:

    1. Haz clic en “Visualizar” en la barra de menú lateral izquierda de Kibana, luego haz clic en “Vega” en la barra de menú superior.
    2. Haz clic en el botón “Nueva visualización” en la esquina superior derecha de la pantalla.
    3. En el editor de Vega en el lado derecho, pega el siguiente código:
    {
      "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
      "data": {
        "url": {
          "%context%": true,
          "index": "request_index",
          "body": {
            "size": 0,
            "aggs": {
              "searchEngine": {
                "terms": {
                  "field": "requests.searchEngine.keyword"
                },
                "aggs": {
                  "avg_execTime": {
                    "avg": {
                      "field": "requests.execTime"
                    }
                  }
                }
              }
            }
          }
        },
        "format": {
          "property": "aggregations.searchEngine.buckets"
        }
      },
      "mark": {
        "type": "bar",
        "tooltip": true
      },
      "encoding": {
        "x": {
          "field": "key",
          "type": "nominal"
        },
        "y": {
          "field": "avg_execTime.value",
          "type": "quantitative",
          "title": "Tiempo promedio de ejecución"
        },
        "color": {
          "field": "key",
          "type": "nominal",
          "scale": {
            "scheme": "category10"
          },
          "title": "Motor de búsqueda"
        }
      }
    }
    
    1. Haz clic en el botón “Ejecutar” en la esquina superior izquierda de la pantalla para ver tu gráfico.

    Este código Vega obtiene los datos de “request_index” y los agrupa según el campo “searchEngine”. Luego calcula el tiempo de ejecución promedio para cada motor de búsqueda y lo muestra como un gráfico de barras.

    Para agregar un promedio histórico para el tiempo de ejecución y dividir los gráficos por motor de búsqueda, puedes modificar el código Vega de esta manera:

    {
      "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
      "data": {
        "url": {
          "%context%": true,
          "index": "request_index",
          "body": {
            "size": 0,
            "aggs": {
              "searchEngine": {
                "terms": {
                  "field": "requests.searchEngine.keyword"
                },
                "aggs": {
                  "historical_avg_execTime": {
                    "avg": {
                      "field": "requests.execTime",
                      "missing": 0
                    }
                  },
                  "avg_execTime": {
                    "avg": {
                      "field": "requests.execTime"
                    }
                  }
                }
              }
            }
          }
        },
        "format": {
          "property": "aggregations.searchEngine.buckets"
        }
      },
      "hconcat": [
        {
          "mark": {
            "type": "bar",
            "tooltip": true
          },
          "encoding": {
            "x": {
              "field": "searchEngine",
              "type": "nominal"
            },
            "y": {
              "field": "avg_execTime.value",
              "type": "quantitative",
              "title": "Tiempo promedio de ejecución"
            },
            "color": {
              "field": "searchEngine",
              "type": "nominal",
              "scale": {
                "scheme": "category10"
              },
              "title": "Motor de búsqueda"
            }
          }
        },
        {
          "mark": {
            "type": "line",
            "tooltip": true
          },
          "encoding": {
            "x": {
              "field": "key",
              "type": "temporal",
              "title": "Fecha"
            },
            "y": {
              "field": "historical_avg_execTime.value",
              "type": "quantitative",
              "title": "Promedio histórico de tiempo de ejecución"
            },
            "color": {
              "field": "searchEngine",
              "type": "nominal",
              "scale": {
                "scheme": "category10"
              },
              "title": "Motor de búsqueda"
            }
          },
          "width": 500,
          "height": 150
        }
      ]
    }
    

    Este código Vega muestra dos gráficos uno al lado del otro. El gráfico izquierdo muestra el tiempo de ejecución promedio por motor de búsqueda como un gráfico de barras, mientras que el gráfico derecho muestra el tiempo de ejecución promedio histórico por motor de búsqueda como un gráfico de líneas. El gráfico derecho utiliza un eje x temporal para mostrar los promedios históricos a lo largo del tiempo. El código también establece el parámetro “missing” en 0 en la agregación del promedio histórico, lo que permite incluir valores faltantes en los cálculos.

    ¡Espero que esto te ayude a crear los gráficos que necesitas! Hazme saber si tienes alguna otra pregunta.

Comments are closed.