Как читать входные данные из файла CSV? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать систему подсчета очков для потенциальных клиентов.Чем выше оценка, тем горячее лидерство.Мое приложение будет принимать путь файла CSV в качестве входных данных.Он будет иметь следующую компоновку для каждой строки:

contact id - integer
event - string
score - decimal

Пример:

1,web,34.33
1,email,3.4
1,email,4
2,webinar,55.4
2,social,15

Каждая строка в файле CSV указывает, что конкретный контакт связан с определенным событием.Каждая строка также предоставляет оценку, представляющую оценку уровня взаимодействия контакта с этим конкретным событием. В приведенном выше случае первая показанная запись указывает, что контакт 1 сгенерировал веб-событие, и этому взаимодействию была присвоена оценка 34,33.Для каждого контакта будет много событий, и контакт может взаимодействовать с определенным типом события более одного раза.

Вот доступные типы событий:

web
email
social
webinar

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

web 1.0
email 1.2
social 1.5
webinar 2.0

Чтобы набрать конкретный контакт, я пытаюсь использовать следующий алгоритм:

  1. Результаты по контактным событиям сначала будут взвешиваться по типу события:

    веб = оценка * 1,0 электронная почта = оценка * 1,2 социальная = оценка * 1,5 вебинар = оценка * 2,0

  2. Все баллы затем суммируются по идентификатору контакта, чтобы получить общий балл для каждого контакта.

  3. Суммированные баллы должны быть затем нормализованы по шкале от 0 до 100. Для нормализации суммированных балловВы возьмете самые высокие и самые низкие суммарные оценки, найденные по всем контактам, составляющим эти 100 и 0 соответственно, и интерполируете оставшиеся промежуточные промежуточные оценки.Округлите суммированные оценки до ближайшего целого числа.

  4. Наконец, контакты должны быть помечены квартилем на основе нормализованной оценки:

    Q3 <нормализованная оценка <= 100->платина Q2 <нормализованная оценка <= Q3 -> золото Q1 <нормализованная оценка <= Q2 -> серебро 0 <= нормализованная оценка <= Q1 -> бронза

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

Example output: 
1, silver, 44 
2, platinum, 99

Я прочитал CSV-файл на вход и разделил значения разделителем-запятой.

public static void main(String[] args) {
        //Delimiters used in the CSV file
        String COMMA_DELIMITER = ",";

        BufferedReader br = null;
        //Reading the csv file
        br = new BufferedReader(new FileReader("test_data.csv"));

        //Create List for holding Score objects
        List<Scores> interactions = new ArrayList<Scores>();

        String line = "";
        //Read to skip the header
        br.readLine();
        //Reading from the second line
        while ((line = br.readLine()) != null) {
            String[] retrieveScores = line.split(COMMA_DELIMITER);



            }
        }
    }

Я ожидаю выхода

1, silver, 44
2, platinum, 99

, но я не получаю никакого вывода.

Буду признателен, если кто-нибудь захочет пройтись по этой проблемечтобы получить желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...