Неопределенные данные при загрузке из CSV для определенных столбцов в D3

Мне нужен столбец с несколькими значениями, он может быть реализован как поле xml

. Он может быть преобразован в запятую, если это необходимо

, запрашивающий список XML в sql-сервере, используя Xquery .

Будучи полем xml, некоторые проблемы могут быть устранены.

С CSV: не может гарантировать, что каждое значение является правильный тип данных: нет возможности предотвратить 1,2,3, банан, 5

С XML: значения в теге могут быть принудительно заданы для типа


С CSV: не удается использовать ограничения внешнего ключа для привязки значений к таблице поиска;

С XML: все еще проблема


С CSV: не может обеспечить уникальность: никакой возможности предотвратить 1,2,3,3 , 3,5

С XML: все еще проблема


С CSV: невозможно удалить значение из списка, не извлекая весь список.

С XML: отдельные элементы могут быть удалены


С CSV: трудно найти все объекты с заданным значением в списке; вам нужно использовать неэффективное сканирование таблицы.

С XML: поле xml можно индексировать


С CSV: трудно подсчитать элементы в списке или сделать другой агрегат запросы. **

С XML: не особо сложно


С CSV: трудно присоединить значения к справочной таблице, к которой они ссылаются. **

С XML: не особенно сложно


С CSV: трудно получить список в отсортированном порядке.

С XML: не особо сложно


С CSV: сохранение целых чисел в виде строк занимает в два раза больше места, чем сохранение двоичных целых чисел.

С XML: память еще хуже, чем csv


С CSV: Плюс много запятых.

С использованием XML: теги используются вместо запятых


Короче говоря, использование XML затрагивает некоторые проблемы с ограниченным списком И может быть при необходимости преобразуется в список с разделителями

-1
задан Maha Alrasheed 24 March 2019 в 19:24
поделиться

1 ответ

Ваши данные CSV должны быть в правильном формате. Есть несколько ненужных пробелов, которые затрудняют анализ, поскольку он включает пробелы в именах заголовков, на основании которых он сохраняет имена свойств в объектах.

cpu-util.csv должно быть

Computer_ID,timestamp,value,Percentage
1,01-07-11 0:00,0.8,8

. Кроме того, d3.js анализирует данные, сохраняя метки заголовков. поэтому массив computerid должен быть заполнен с использованием свойства Computer_ID данных. Таким образом, ваш код должен выглядеть примерно так:

<script>
   var timestamp = [],
       computerid = [],
       percentage = [];

 d3.csv("cpu-util.csv", function(data) {
   console.log(data); //see the data structure
    for (var i = 0; i < data.length; i++) {
        timestamp[i] = data[i].timestamp; //use the property names.
        computerid[i] = data[i].Computer_ID; 
        percentage[i] = data[i].Percentage;
        console.log(computerid[i]);
        console.log(timestamp[i]);
        console.log(percentage[i]);
    }
     console.log(computerid[0]); //this will appear as it is within the function and 
                                 //the array is filled by the time this line is run
  });

  console.log(computerid[0]); //this will be undefined due to the asynchronous nature of javascript. 
                              //This line of code runs before the for loop within the function
</script>

Если вы видите журнал консоли, console.log(computerid[0]) появится первым в журнале, а не перед тремя другими в функции, из-за асинхронного характера javascript. Есть способы, с помощью которых вы можете объединить функции в синхронные функции, используя Async / Await или Promises.

Также d3.js анализирует всю информацию как строки. Поэтому числовые значения, такие как Percentage, необходимо преобразовать в числовые типы данных с помощью функции. Просто имейте это в виду.

0
ответ дан Coola 24 March 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: