Поделиться через


Загрузка данных в память с помощью rxImport (учебник по SQL Server и RevoScaleR)

Область применения: SQL Server 2016 (13.x) и более поздних версий

Эта часть 10 входит в состав серии учебников по RevoScaleR, посвященной использованию функций RevoScaleR в SQL Server.

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

Функцию rxImport можно использовать для передачи данных из источника данных в кадр данных в памяти сеанса или в файл XDF на диске. Если не указать файл в качестве назначения, данные помещаются в память как кадр данных.

Извлечение подмножества данных из SQL Server в локальную память

Вы решили более подробно изучить заказчиков с высокой степенью риска. Исходная таблица в SQL Server большая, поэтому вы хотите получить сведения только о клиентах с высоким риском. Затем вы загрузите ее в кадр данных в памяти локальной рабочей станции.

  1. Задайте в качестве контекста вычисления локальную рабочую станцию.

    rxSetComputeContext("local")
    
  2. Создайте объект источника данных SQL Server, указав допустимую инструкцию SQL в параметре sqlQuery . В этом примере возвращается подмножество наблюдений с наивысшими показателями рисков. Таким образом, в локальную память будут помещены только действительно нужные данные.

    sqlServerProbDS \<- RxSqlServerData(
        sqlQuery = paste("SELECT * FROM ccScoreOutput2",
        "WHERE (ccFraudProb > .99)"),
        connectionString = sqlConnString)
    
  3. Вызовите функцию rxImport для считывания данных в кадр данных в локальном сеансе R.

    highRisk <- rxImport(sqlServerProbDS)
    

    Если операция выполнена успешно, вы увидите сообщение о состоянии: "Строки считываются: 35, всего обработанных строк: 35, общее время блокирования: 0,036 секунды".

  4. Теперь, когда наблюдения с высокой степенью риска находятся в кадре данных в памяти, можно использовать различные функции R для работы с кадром данных. Например, можно упорядочить клиентов по оценке риска и вывести список клиентов, которые представляют наибольший риск.

    orderedHighRisk <- highRisk[order(-highRisk$ccFraudProb),]
    row.names(orderedHighRisk) <- NULL
    head(orderedHighRisk)
    

Результаты

ccFraudLogitScore   state gender cardholder balance numTrans numIntlTrans creditLine ccFraudProb1
9.786345    SD   Male  Principal   23456       25            5 75   0.99994382
9.433040    FL Female  Principal   20629       24           28 75   0.99992003
8.556785    NY Female  Principal   19064       82           53 43   0.99980784
8.188668    AZ Female  Principal   19948       29            0 75   0.99972235
7.551699    NY Female  Principal   11051       95            0 75   0.99947516
7.335080    NV   Male  Principal   21566        4            6  75   0.9993482

Дополнительные сведения о функции rxImport

Функцию rxImport можно использовать не только для передачи данных, но и для их преобразования в процессе считывания. Например, можно указать количество символов для столбцов фиксированной ширины, предоставить описание переменных, задать уровни столбцов коэффициентов и даже создать уровни, которые будут использоваться после импорта.

Функция rxImport присваивает имена переменных столбцам в процессе импорта, но вы можете указать новые имена переменных с помощью параметра colInfo или изменить типы данных с помощью параметра colClasses.

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

Следующие шаги