Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op: SQL Server 2016 (13.x) en latere versies 
van Azure SQL Managed Instance
In deel twee van deze vierdelige reeks zelfstudies bereidt u de gegevens van een database voor om clustering uit te voeren in R met SQL Server Machine Learning Services of op Big Data-clusters.
In deel twee van deze vierdelige reeks zelfstudies bereidt u de gegevens van een database voor om clustering uit te voeren in R met SQL Server Machine Learning Services.
In deel twee van deze vierdelige reeks zelfstudies bereidt u de gegevens van een database voor om clustering uit te voeren in R met SQL Server 2016 R Services.
In deel twee van deze vierdelige reeks zelfstudies bereidt u de gegevens van een database voor om clustering uit te voeren in R met Azure SQL Managed Instance Machine Learning Services.
In dit artikel leert u het volgende:
- Klanten scheiden langs verschillende dimensies met behulp van R
 - De gegevens uit de database laden in een R-gegevensframe
 
In deel 1 hebt u de vereisten geïnstalleerd en de voorbeelddatabase hersteld.
In deel drie leert u hoe u een K-Means-clusteringmodel maakt en traint in R.
In deel vier leert u hoe u een opgeslagen procedure maakt in een database die clustering in R kan uitvoeren op basis van nieuwe gegevens.
Vereiste voorwaarden
- In deel twee van deze zelfstudie wordt ervan uitgegaan dat u deel één hebt voltooid.
 
Afzonderlijke klanten
Maak een nieuw RScript-bestand in RStudio en voer het volgende script uit. In de SQL-query scheidt u klanten langs de volgende dimensies:
- orderRatio = retourorderverhouding (totaal aantal orders gedeeltelijk of volledig geretourneerd versus het totale aantal orders)
 - itemsRatio = verhouding retouritem (totaal aantal geretourneerde items versus het aantal gekochte artikelen)
 - monetaryRatio = retourbedragverhouding (totale monetaire hoeveelheid geretourneerde items versus het aangeschafte bedrag)
 - frequency = retourfrequentie
 
Vervang In de functie connStrServerName door uw eigen verbindingsgegevens.
# 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";
De gegevens in een gegevensframe laden
Gebruik nu het volgende script om de resultaten van de query te retourneren naar een R-gegevensframe.
# 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);
U zou resultaten moeten zien die er ongeveer als volgt uitzien.
  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
De hulpbronnen opschonen
Als u niet verdergaat met deze zelfstudie, verwijdert u de tpcxbb_1gb-database.
Volgende stappen
In deel twee van deze reeks zelfstudies hebt u geleerd hoe u het volgende kunt doen:
- Segmenteer klanten op basis van verschillende dimensies met behulp van R
 - De gegevens uit de database laden in een R-gegevensframe
 
Als u een machine learning-model wilt maken dat gebruikmaakt van deze klantgegevens, volgt u deel drie van deze reeks zelfstudies: