Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2016 (13.x) и более поздних версий
Эта часть 13 входит в состав серии учебников по RevoScaleR, посвященной использованию функций RevoScaleR в SQL Server.
В этом учебнике вы узнаете, как использовать XDF-файл для передачи данных между удаленным и локальным контекстами вычисления. Хранение данных в файле XDF позволяет выполнять их преобразование.
По завершении используйте данные в файле для создания новой таблицы SQL Server. Функция rxDataStep может применять преобразования к данным и преобразовывать кадры данных в файлы XDF и наоборот.
Создание таблицы SQL Server на основе файла XDF
В этом упражнении вы снова будете использовать данные по мошенничеству с кредитными картами. В этом сценарии вас попросили провести дополнительный анализ данных по пользователям в штатах Калифорния, Орегон и Вашингтон. Чтобы повысить эффективность, вы решили сохранить на локальном компьютере данные только по этим штатам и работать с переменными gender, cardholder, state и balance.
Повторно используйте ранее созданную переменную
stateAbbдля определения уровней, которые необходимо включить, а затем запишите их в новую переменнуюstatesToKeep.statesToKeep <- sapply(c("CA", "OR", "WA"), grep, stateAbb) statesToKeepРезультаты
Целостности и доступности ИЛИ WA 5 38 48 Определите данные, которые нужно перенести с сервера SQL Server, с помощью запроса Transact-SQL. В дальнейшем эта переменная будет использоваться в качестве аргумента inData функции rxImport.
importQuery <- paste("SELECT gender,cardholder,balance,state FROM", sqlFraudTable, "WHERE (state = 5 OR state = 38 OR state = 48)")Убедитесь в том, что в запросе нет скрытых символов, например переводов строки или символов табуляции.
Затем определите столбцы, которые будут использоваться при работе с данными в R. Например, в наборе данных небольшого размера нужно только три уровня признаков, так как запрос вернет данные только для трех состояний. Примените переменную
statesToKeepдля определения включаемых уровней.importColInfo <- list( gender = list( type = "factor", levels = c("1", "2"), newLevels = c("Male", "Female")), cardholder = list( type = "factor", levels = c("1", "2"), newLevels = c("Principal", "Secondary")), state = list( type = "factor", levels = as.character(statesToKeep), newLevels = names(statesToKeep)) )Задайте локальный контекст вычисления, так как все данные должны быть доступны на локальном компьютере.
rxSetComputeContext("local")Функция rxImport позволяет импортировать данные из любого поддерживаемого источника данных в локальный XDF-файл. Использовать локальную копию данных удобно, если требуется проанализировать данные множеством различных способов и вы хотите избежать многократного выполнения одного и того же запроса.
Создайте объект-источник данных, передав ранее определенные переменные в качестве аргументов функции RxSqlServerData.
sqlServerImportDS <- RxSqlServerData( connectionString = sqlConnString, sqlQuery = importQuery, colInfo = importColInfo)Вызовите функцию rxImport, чтобы записать данные в файл с именем
ccFraudSub.xdfв текущем рабочем каталоге.localDS <- rxImport(inData = sqlServerImportDS, outFile = "ccFraudSub.xdf", overwrite = TRUE)Объект
localDs, возвращенный функцией rxImport, является облегченным объектом-источником данных RxXdfData, который представляет локально сохраненный на диске файл данныхccFraud.xdf.Вызовите функцию rxGetVarInfo, указав в качестве цели XDF-файл, чтобы убедиться, что схема данных такая же.
rxGetVarInfo(data = localDS)Результаты
rxGetVarInfo(data = localDS) Var 1: gender, Type: factor, no factor levels available Var 2: cardholder, Type: factor, no factor levels available Var 3: balance, Type: integer, Low/High: (0, 22463) Var 4: state, Type: factor, no factor levels availableТеперь можно вызывать различные функции R, чтобы анализировать объект localDs (аналогично анализу источника данных в SQL Server). Например, можно свести данные по полу:
rxSummary(~gender + cardholder + balance + state, data = localDS)
Следующие шаги
Этот учебник завершает серию, посвященную RevoScaleR и SQL Server. В них было представлено множество понятий, связанных с данными и вычислениями, и был заложен фундамент для дальнейшей работы с учетом ваших собственных проектных требований.
Чтобы углубить знания о RevoScaleR, можно вернуться к списку учебников по R и пройти упражнения, которые вы могли пропустить. Кроме того, можно обратиться к практическим руководствам в содержании, чтобы получить сведения об общих задачах.