Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Instância Gerenciada SQL do Azure
Na segunda parte desta série de tutoriais de quatro partes, você preparará os dados de um banco de dados para executar clustering em R com Serviços de Aprendizado de Máquina do SQL Server ou em Clusters de Big Data.
Na segunda parte desta série de tutoriais de quatro partes, você preparará os dados de um banco de dados para executar clustering em R com os Serviços de Aprendizado de Máquina do SQL Server.
Na segunda parte desta série de tutoriais de quatro partes, você preparará os dados de um banco de dados para executar clustering em R com o SQL Server 2016 R Services.
Na segunda parte desta série de tutoriais de quatro partes, você preparará os dados de um banco de dados para executar clustering em R com os Serviços de Aprendizado de Máquina de Instância Gerenciada SQL do Azure.
Neste artigo, você aprenderá a:
- Separe os clientes em diferentes dimensões usando R
- Carregue os dados do banco de dados em um quadro de dados R
Na primeira parte, você instalou os pré-requisitos e restaurou o banco de dados de exemplo.
Na terceira parte, você aprenderá como criar e treinar um modelo de agrupamento K-Means em R.
Na quarta parte, você aprenderá como criar um procedimento armazenado em um banco de dados que pode executar clustering em R com base em novos dados.
Pré-requisitos
- A segunda parte deste tutorial pressupõe que você concluiu a primeira parte.
Separe os clientes
Crie um novo arquivo RScript no RStudio e execute o seguinte script. Na consulta SQL, você está separando os clientes nas seguintes dimensões:
- orderRatio = taxa de ordem de retorno (número total de pedidos parcial ou totalmente devolvidos versus o número total de pedidos)
- itemsRatio = índice de itens de retorno (número total de itens devolvidos versus o número de itens comprados)
- monetaryRatio = rácio do montante de retorno (montante monetário total dos itens devolvidos versus o montante adquirido)
- frequência = frequência de retorno
Na função connStr , substitua ServerName por suas próprias informações de conexão.
# Define the connection string to connect to the tpcxbb_1gb database
connStr <- "Driver=SQL Server;Server=ServerName;Database=tpcxbb_1gb;uid=Username;pwd=Password"
#Define the query to select data
input_query <- "
SELECT ss_customer_sk AS customer
,round(CASE
WHEN (
(orders_count = 0)
OR (returns_count IS NULL)
OR (orders_count IS NULL)
OR ((returns_count / orders_count) IS NULL)
)
THEN 0.0
ELSE (cast(returns_count AS NCHAR(10)) / orders_count)
END, 7) AS orderRatio
,round(CASE
WHEN (
(orders_items = 0)
OR (returns_items IS NULL)
OR (orders_items IS NULL)
OR ((returns_items / orders_items) IS NULL)
)
THEN 0.0
ELSE (cast(returns_items AS NCHAR(10)) / orders_items)
END, 7) AS itemsRatio
,round(CASE
WHEN (
(orders_money = 0)
OR (returns_money IS NULL)
OR (orders_money IS NULL)
OR ((returns_money / orders_money) IS NULL)
)
THEN 0.0
ELSE (cast(returns_money AS NCHAR(10)) / orders_money)
END, 7) AS monetaryRatio
,round(CASE
WHEN (returns_count IS NULL)
THEN 0.0
ELSE returns_count
END, 0) AS frequency
FROM (
SELECT ss_customer_sk,
-- return order ratio
COUNT(DISTINCT (ss_ticket_number)) AS orders_count,
-- return ss_item_sk ratio
COUNT(ss_item_sk) AS orders_items,
-- return monetary amount ratio
SUM(ss_net_paid) AS orders_money
FROM store_sales s
GROUP BY ss_customer_sk
) orders
LEFT OUTER JOIN (
SELECT sr_customer_sk,
-- return order ratio
count(DISTINCT (sr_ticket_number)) AS returns_count,
-- return ss_item_sk ratio
COUNT(sr_item_sk) AS returns_items,
-- return monetary amount ratio
SUM(sr_return_amt) AS returns_money
FROM store_returns
GROUP BY sr_customer_sk
) returned ON ss_customer_sk = sr_customer_sk";
Carregar os dados em um quadro de dados
Agora, use o script a seguir para retornar os resultados da consulta para um quadro de dados R.
# Query using input_query and get the results back
# to data frame customer_data
library(RODBC)
ch <- odbcDriverConnect(connStr)
customer_data <- sqlQuery(ch, input_query)
# Take a look at the data just loaded
head(customer_data, n = 5);
Você verá resultados semelhantes aos seguintes.
customer orderRatio itemsRatio monetaryRatio frequency
1 29727 0 0 0.000000 0
2 26429 0 0 0.041979 1
3 60053 0 0 0.065762 3
4 97643 0 0 0.037034 3
5 32549 0 0 0.031281 4
Limpeza de recursos
Se você não quiser continuar com este tutorial, exclua o banco de dados tpcxbb_1gb.
Próximos passos
Na segunda parte desta série de tutoriais, você aprendeu como:
- Separe os clientes em diferentes dimensões usando R
- Carregue os dados do banco de dados em um quadro de dados R
Para criar um modelo de aprendizado de máquina que use esses dados do cliente, siga a parte três desta série de tutoriais: