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.

Kibana Vega Error de extensión infinita para el campo.

Estoy creando un gráfico de dispersión y funciona bien hasta que elijo un rango de tiempo desde el calendario que no contiene datos. Tengo datos hasta mayo de 2021, por lo que cuando elijo 1 año está bien, pero cuando elijo los últimos 4 meses, me da un error: para el eje X extensión infinita para el campo “tiempo”: [Infinito, -Infinito] y también error para el eje Y extensión infinita para el campo “Kilómetros”: [Infinito, -Infinito].

Probablemente sea un problema en la conversión de fechas, pero ¿por qué funciona para períodos que contienen datos y por qué me da error también para los kilómetros? ¿Alguna ayuda, por favor?

La consulta elástica devuelve el campo de tiempo en formato de tiempo Unix.

Gracias.

(También tengo el mismo problema con el gráfico de línea en Vega)

Captura de pantalla del error: Enlace a la captura de pantalla

{
  "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json",
  "data": {
    "url": {
      "%context%": true,
      "%timefield%": timefield,
      "index": "indextrains",
      "body": {
        "size": 10000,
        "_source": [
          "timefield",
          "km"
        ]
      }
    },
    "format": {
      "property": "hits.hits"
    }
  },
  "transform": [
    {
      "calculate": "datetime(datum._source['timefield'])",
      "as": "time"
    },
    {
      "calculate": "datum._source['km']",
      "as": "Kilometers"
    }
  ],
  "mark": {
    "type": "circle"
  },
  "encoding": {
    "x": {
      "field": "time",
      "type": "temporal"
    },
    "y": {
      "field": "Kilometers",
      "type": "quantitative"
    }
  }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que cuando se selecciona un rango de tiempo sin datos, la consulta resultante devuelve valores de extensión infinitos tanto para el eje X como para el eje Y. Esto probablemente se debe a que la consulta elástica devuelve el campo de tiempo en tiempo Unix y, cuando no hay datos para un determinado rango de tiempo, los valores resultantes de tiempo Unix son infinito o -infinito.

    Para solucionar este problema, podrías intentar modificar tu especificación Vega-Lite para filtrar cualquier punto de datos con valores de extensión infinitos usando la función isValid. Aquí tienes un ejemplo de cómo podrías modificar tu especificación Vega-Lite:

    {
      "$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json",
      "data": {
        "url": {
          "%context%": true,
          "%timefield%": timefield,
          "index": indextrains,
          "body": {
            "size": 10000,
            "_source": [
              "timefield",
              "km"
            ]
          }
        },
        "format": {
          "property": "hits.hits"
        }
      },
      "transform": [
        {
          "calculate": "datetime(datum._source['timefield'])",
          "as": "time"
        },
        {
          "calculate": "datum._source['km']",
          "as": "Kilometers"
        },
        {
          "filter": "isValid(datum.time) && isValid(datum.Kilometers)"
        }
      ],
      "mark": {
        "type": "circle"
      },
      "encoding": {
        "x": {
          "field": "time",
          "type": "temporal"
        },
        "y": {
          "field": "Kilometers",
          "type": "quantitative"
        }
      }
    }
    

    Esta modificación agrega un nuevo paso de transformación que utiliza la función isValid para filtrar cualquier punto de datos con valores de extensión infinitos tanto para el campo de tiempo como para el campo de Kilometers. Esto debería permitir que tu gráfico de dispersión (o gráfico de líneas) muestre los datos correctamente para cualquier rango de tiempo, incluso si no hay puntos de datos dentro de ese rango.

Comments are closed.