Фильтр данных работает с данными json, но не с данными CSV - PullRequest
2 голосов
/ 15 апреля 2020

В этой веганской диаграмме, если я скачаю и преобразую flare-dependencies.json в csv с помощью следующей команды jq,

jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' flare-dependencies.json > flare-dependencies.csv

И изменим соответствующее свойство данных в edge-bundling.vg.json файл из:

{
  "name": "dependencies",
  "url": "data/flare-dependencies.json",
  "transform": [
    {
      "type": "formula",
      "expr": "treePath('tree', datum.source, datum.target)",
      "as": "treepath",
      "initonly": true
    }
  ]
},

до

{
  "name": "dependencies",
  "url": "data/flare-dependencies.csv",
  "format": { "type": "csv" },
  "transform": [
    {
      "type": "formula",
      "expr": "treePath('tree', datum.source, datum.target)",
      "as": "treepath",
      "initonly": true
    }
  ]
},

Эффект зависания не работает (цвета не меняются при наведении курсора на ребра / узлы.

Я подозреваю что проблема с этим разделом:

  "name": "selected",
  "source": "dependencies",
  "transform": [
    {
      "type": "filter",
      "expr": "datum.source === active || datum.target === active"
    }
  ]

Что мне не хватает? Как я могу это исправить?

1 Ответ

2 голосов
/ 15 апреля 2020

JSON данные напечатаны; формат файла различает строковые и числовые данные. Данные CSV не типизированы: все записи представлены в виде строк.

Приведенная выше спецификация диаграммы требует, чтобы некоторые поля были числовыми. При преобразовании входных данных в CSV необходимо добавить спецификатор format , чтобы указать числовые типы для столбцов числовых данных.

В случае этой диаграммы вы можете использовать следующее для узлов данные:

"format": {
  "type": "tsv",
  "parse": { "id": "number", "name": "string", "parent": "number" }
},

и следующие для ссылок данные:

"format": {
  "type": "tsv",
  "parse": { "source": "number", "target": "number" }
},
...