R Chart в SSRS (Отображение диаграммы в SSRS) - Часть 3
В последнем посте мы показали, как можно установить внешний пакет, например ggplot2, в ML-сервисы, а также как мы можем использовать данные в SQL Server для создания диаграммы в студии R.
В этом сообщении мы расскажем вам, как создать диаграмму на SQL Server и показать ее в SSRS.
Чтобы создать диаграмму нам нужно:
-
Создать диаграмму как двоичную переменную var
<span style="color: #008000;"><strong>exec sp_execute_external_script</strong> @language =<strong>N'R</strong>',</span>
<strong><span style="color: #800080;">@script=N'library("ggplot2")</span></strong>
<strong><span style="color: #800080;">fields<-inputDataSet</span></strong>
<strong><span style="color: #800080;">fields<-na.omit(fields)</span></strong>
<strong><span style="color: #800080;">image_file = tempfile(); </span></strong>
<strong><span style="color: #800080;">jpeg(filename = image_file, width=1000, height=1000); </span></strong>
<strong><span style="color: #800080;">print(ggplot(fields,aes(x=fields$TaxAmt,y=fields$TaxAmt))+geom_boxplot()+facet_grid(fields$Color~.)</span></strong>
<strong><span style="color: #800080;">)</span></strong>
<strong><span style="color: #800080;">dev.off();</span></strong>
<strong><span style="color: #800080;">OutputDataset <- data.frame(data=readBin(file(image_file,"rb"),what=raw(),n=1e6)) </span></strong>
<strong><span style="color: #800080;">'</span></strong>,<strong><span style="color: #ff6600;">@input_data_1 =N'select Color,Size,class,TaxAmt,SalesAmount
from [dbo].[FactInternetSales] FIS inner join
[dbo].[DimProduct] DP on FIS.ProductKey=dp.ProductKey'
,@input_data_1_name = N'inputDataSet'
</span><span style="color: #ff6600;">,@output_data_1_name = N'OutputDataset'
</span><span style="color: #008080;">WITH RESULT SETS</span> <span style="color: #000080;">((plot varbinary(max)));</span></strong>
1- запустить внешние скрипты, уже упомянутые в последних сообщениях
2- @script=N’library(“ggplot2″)
fields<-inputDataSet
fields<-na.omit(fields)
image_file = tempfile();
jpeg(filename = image_file, width=1000, height=1000);
print(ggplot(fields,aes(x=fields$TaxAmt,y=fields$TaxAmt))+geom_boxplot()+facet_grid(fields$Color~.)
)
dev.off();
OutputDataset <- data.frame(data=readBin(file(image_file,”rb”),what=raw(),n=1e6))
‘,
library(“ggplot2”) : обратитесь к пакету
fields<-inputDataSet: получите данные
image_file = tempfile();
jpeg(filename = image_file, width=500, height=500); для создания файла изображения
ggplot(fields,aes(x=fields$TaxAmt,y=fields$TaxAmt))+geom_boxplot()+facet_grid(fields$Color~.)
: код был объяснен в последних сообщениях.
dev.off(); OutputDataset <- data.frame(data=readBin(file(image_file,”rb”),what=raw(),n=1e6)) ‘, : для создания двоичной переменной var для преобразования графика в переменную с двоичным типом ,
3- @input_data_1 =N’select Color,Size,class,TaxAmt,SalesAmount from [dbo].[FactInternetSales] FIS inner join [dbo].[DimProduct] DP on FIS.ProductKey=dp.ProductKey’ ,@input_data_1_name = N’inputDataSet’ ,@output_data_1_name = N’OutputDataset’
Входные данные, собранныеиз базы данных SQL-сервера "Adventureworks".
4- С НАБОРОМ РЕЗУЛЬТАТОВ ((график varbinary (max)));
Верните график как формат двоичной переменной
После запуска кода мы можем получить результат bwlow
После запуска на выходе вы увидите, что у нас двоичный результат.
2- Хранить график в таблице
Просто создайте таблицу с именем ggplot
1 2 3 4 5 6 7 8 |
IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ggplot]') AND [type] IN (N'U')) BEGIN alter TABLE [dbo].[ggplot]( [plot] [varbinary](MAX) NULL ); END |
Теперь вы можете поместить график в таблицу командой вставки, как показано ниже
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<strong><span style="color: #ff9900;">insert into [dbo].[ggplot] </span></strong>exec sp_execute_external_script @language =N'R', @script=N'library("ggplot2") fields<-inputDataSet fields<-na.omit(fields) image_file = tempfile(); jpeg(filename = image_file, width=1000, height=1000); print(ggplot(fields,aes(x=fields$TaxAmt,y=fields$TaxAmt))+geom_boxplot()+facet_grid(fields$Color~.) ) dev.off(); OutputDataset <- data.frame(data=readBin(file(image_file,"rb"),what=raw(),n=1e6)) ', @input_data_1 =N'select Color,Size,class,TaxAmt,SalesAmount from [dbo].[FactInternetSales] FIS inner join [dbo].[DimProduct] DP on FIS.ProductKey=dp.ProductKey' ,@input_data_1_name = N'inputDataSet' ,@output_data_1_name = N'OutputDataset' |
Теперь мы можем показать диаграмму в SSRS.
Отображение диаграммы в SSRS
Вам нужно иметь инструменты SQL Server Data для создания отчета SSRS.
1- Создайте проект SSRS
Затем:
После этого просто нажмите на область оформления и выберите вариант изображения
После вставки изображения нужно настроить меню изображения, назначив требуемые поля.
В filds нам нужно идентифицировать источник изображения (см. Выше рисунок), который находится из базы данных, поля и тип изображения (png, jpg и так далее). Наконец, просто нажмите «preview option», чтобы просмотреть изображение
Любые изображения могут быть помещены в отчет SSRS из дерева решений, кластеризации и т. д.. Кроме того, этот процесс можно рассматривать как способ расширения возможностей визуализации SSRS.