Интеграция R-скрипта в запрос SELECT

Таким образом, у меня есть следующий интегрированный R-код, который я использую, чтобы иметь возможность сопоставлять материал с помощью регулярного выражения без особого усложнения (то, что я хочу сделать в конце концов, является более сложным, чем этот пример, поэтому регулярное выражение в значительной степени требуется, это только первый шаг) :

DECLARE @in_adcn nvarchar(500) DECLARE @out_ou nvarchar(500) SET @in_adcn = N'CN=Surname\, Firstname (asdf),OU=999,OU=Department2,OU=Fixed,OU=Fixed,DC=Fixed,DC=Fixed,DC=Fixed' SET @out_ou = N'' -- Extract department name from AD OU string EXEC sp_execute_external_script @language=N'R', @script = N' pat = "^.+OU=([^,]+),OU=Fixed,OU=Fixed,DC=Fixed,DC=Fixed,DC=Fixed$"; m <- gsub(pat, "\\1", regmatches(in_adcn1, gregexpr(pat, in_adcn1))[[1]]); out_ou1 <- m;', @params = N'@in_adcn1 varchar(500), @out_ou1 varchar(500) output', @in_adcn1 = @in_adcn, @out_ou1 = @out_ou OUTPUT WITH RESULT SETS NONE; SELECT @out_ou; GO 

Это отлично работает, оно возвращает именно то, что я хочу, из строки AD различаемого имени (в данном случае: «Department2»).

Теперь я хочу, чтобы эта строка вывода внутри этого запроса SELECT (входная строка для R-скрипта – acad.ADCn ):

 SELECT acad.ADCn, ( --<here should be the code that returns the string from the R script above> ) AS Departmentname, acad.NBAccountName, acb.eMail FROM MyDB.dbo.AccountTable AS acad LEFT JOIN MyDB.dbo.AddressTable AS acb ON acad.[ObjectID] = acb.[ObjectID] 

Пока мне еще не удалось это сделать. Любая помощь будет принята с благодарностью.

Рассмотрите возможность ввода всего запроса SELECT в качестве параметра @input_data_1 (следуя примеру учебника ). Затем запустите операцию регулярного выражения в новый сохраненный столбец dataframe, DepartmentName . Наконец, выведите весь набор результатов из четырех столбцов.

 EXECUTE sp_execute_external_script @language = N'R' , @script = N' df <- InputDataSet; pat = "^.+OU=([^,]+),OU=Fixed,OU=Fixed,DC=Fixed,DC=Fixed,DC=Fixed$"; df$DepartmentName <- gsub(pat, "\\1", regmatches(df$ADCn, gregexpr(pat, df$ADCn))[[1]]); OutputDataSet <- df[c("ADCn", "DepartmentName", "NBAccountName", "eMail")];' , @input_data_1 = N' SELECT acad.ADCn, acad.NBAccountName, acb.eMail FROM MyDB.dbo.AccountTable AS acad LEFT JOIN MyDB.dbo.AddressTable AS acb ON acad.[ObjectID] = acb.[ObjectID];' WITH RESULT SETS (( [ADCn] varchar(255), [DepartmentName] varchar(255), [NBAccountName] varchar(255), [eMail] varchar(255) )); 

Конечно, без данных, выше непроверено. Пожалуйста, отрегулируйте, чтобы соответствовать требованиям, особенно с вводом ADCn.

  • SQL Server 2016 всегда зашифрован - сравнение и вычисленное выражение с использованием всегда зашифрованного столбца
  • Как запустить выражение строки строки в SQL Server (триггер или функция)
  • Невозможно импортировать SQL Azure bacpac в 2016 CTP
  • Как обновить пакет SSIS SQL Server 2008 R2 до SQL Server 2016?
  • Найти подстроку в строке
  • Сравнение версий Visual Studio 2015 2 и Sql Server 2016
  • Названия объектов базы данных Escape
  • Очень медленно VARBINARY (MAX) Выбрать
  • Вход в локальный экземпляр SQL Server с окнами auth
  • SQL Server 2016 JSON: выбор массива строк вместо массива объектов
  • как определить тайм-аут SQL-сервера из приложения .NET без использования catch Exception
  • Interesting Posts

    Преобразуйте свой столбец с датой, как «2015-08-24 12: 05: 19.000», в только даты и минуты

    Случай SQL с несколькими полями

    Сложный фильтр запросов, использующий метод Like () в T-SQL

    Строка SQL SELECT WHERE заканчивается столбцом

    Как рассчитать количество пользователей, которые делали вещь X раз в течение 7-дневного периода в SQL Server?

    Определение зависимостей на уровне столбцов между базами данных

    порядок по sql-данным с использованием условий (case) на основе производных столбцов

    SSIS. Как использовать набор результатов как вход в задачу SQL и получить правильные типы данных?

    Как мне написать предложение WHERE в SQL Server для следующего случая?

    Оператор sql server if

    Недопустимое имя столбца Ошибка SQL Server

    SQL-запрос bcp возвращает SQLState = 28000. NativeError = 18456 Ошибка входа для пользователя

    Сохранение изображения в SQL Server или на диске

    SQL Server 2008 R2: удалить запись о единичном вхождении.

    перенести данные из MS SQL в PostgreSQL?

    Давайте будем гением компьютера.