sql >> Databasteknik >  >> RDS >> Sqlserver

Lär dig att utföra produktanalys med SQL Server Full-Text Search. Del 2

Den här artikeln är tillägnad en något mer komplex produktanalys med Full-Text Search i motsats till den första delen där vi tittade på hur man utför en grundläggande produktanalys.

Här kommer läsarna att implementera några heltäckande exempel på produktanalys ur försäljningssynpunkt med hjälp av Full-Text-frågor.

Den här artikeln visar styrkan hos fulltextfrågor när de används med analytiska funktioner för att utföra en produktanalys.

Förutsättningar

Jag föreslår att du går igenom den här artikelns förutsättningar innan du börjar implementera produktanalysexempel.

Del 1. Viktigt

Vi antar att du har gått igenom Lär dig att utföra produktanalys med SQL Server Full-Text Search. Del 1 och ha förmågan att utföra en grundläggande produktanalys med hjälp av de exempel som nämns i första delen.

T-SQL- och fulltextsökningsförståelse

För att känna sig bekväma när de läser den här artikeln rekommenderar vi att läsarna har en god förståelse för T-SQL-skript och fulltextsökning.

Se Implementera fulltextsökning i SQL Server 2016 för avancerade användare för att få en avancerad förståelse för fulltextsökning förutsatt att du redan är bekant med dess grunder. Ändå rekommenderar vi att du går igenom artikeln Implementing Full-Text Search i SQL Server 2016 för nybörjare om du behöver utveckla en grundläggande förståelse innan du fortsätter med avancerad användning av Full-Text Search.

Fulltextsökning installerad

För att kunna fortsätta med artikeln, se till att du har installerat Full-Text Search på din SQL-instans.

Följ dessa steg för att installera Full-Text Search på SQL-servern:

  1. Kör SQL Installer.
  2. Kör installationsfilen.
  3. Lägg till som en funktion.
  4. Välj din nuvarande server.
  5. Välj instansfunktion som ska läggas till.

Du kan också hänvisa till artikeln Implementera fulltextsökning i SQL Server 2016 för nybörjare för att få detaljerad information om stegen som nämns ovan.

Exempeldatabas (CarPlus)

Du bör följa instruktionerna i den första delen om du ännu inte har ställt in exempeldatabasen. Observera att du måste konfigurera CarPlus exempeldatabas för att implementera exemplen i den här artikeln.

Fulltextkatalog och Fulltextindex

Vi förväntar oss också att du definierar Full-Text-katalogen och Full-Text-index i kolumnen FeaturesLiked.

Se Lär dig att utföra produktanalyser med SQL Server Full-Text Search. Del 1 för att utföra stegen ovan om du inte redan har slutfört dem.

Analys 1:Fulltextsökning efter sensorer

Låt oss säga att vi hade flera sensorer som levererades med bilen, och nu är den högsta ledningen angelägen om att veta följande saker:

  1. Tyckte kunderna som köpte bilarna om några sensorer?
  2. Vilken typ av sensorer gillade de?
  3. Hur många sensorer av en viss typ gillade de?
  4. Kan vi jämföra alla olika sensorer som kunderna gillade?

Du kan hitta svaren på alla dessa frågor med hjälp av Full-Text Search.

Söksensorer föredragna av kunder

För att veta om kunderna gillade någon av bilsensorerna när de gjorde sina beställningar måste vi köra en fulltextfråga enligt följande:

--View Orders where customers liked Sensors
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor')

Du kommer då att se följande resultat:

En sak är säker:kunderna gillade out-of-box-sensorer när de köpte sina bilar. Det beror på att fulltextsökning efter sensorer gav ett antal resultat.

Sökningen informerar om att vi har minst två typer av sensorer som kunderna gillade:

  1. Touchsensor
  2. Parkeringssensor för backning

Man kan säkert säga att kunderna gillade åtminstone de ovan nämnda typerna av sensorer.

Söker efter alla parkeringssensorer som kunderna föredrar

Nu måste vi använda fulltextsökning för att hitta alla typer av parkeringssensorer som våra kunder gillade.

Vi kan ta reda på detta genom att använda NEAR med följande söktermer (enligt följande):

--View Orders where customers liked parking sensors
SELECT
FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor NEAR Parking')

Utgången är som följer:

Som ett resultat verkar det finnas sju av sådana fall där kunder gillade Parkeringssensor . Vi måste dock gå djupare för att få mer information.

Sökningssensorer andra än parkeringssensorer som kunderna föredrar

Nu skulle vi vilja veta den andra sidan av historien, det vill säga att ta reda på vilka kunder som gillade sensorerna förutom Parkeringssensor .

Använd följande fulltextfråga för att söka efter de sensorer som kunderna gillade förutom Parkeringssensor :

--View Orders where customers liked other than parking sensors
SELECT 
CarOrderId
,FeaturesLiked 
FROM dbo.CarOrder 
WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Parking')

Resultaten av ovanstående fulltextfråga är följande:

Förutom Parkeringssensor, kunderna gillade Touch Sensor .

Jämför parkeringssensorer med peksensorer och med andra sensorer

Nästa stora sak är att se om vi kan jämföra Parkeringssensor med Touchsensor med andra typer av sensorer som kunderna gillade när de beställde bilköp.

Vi behöver också veta det totala antalet beställningar som lagts den här säsongen för att göra jämförelsen mer intressant.

Detta räcker dock inte. Vi måste också förstå procentandelen av likheten mellan sensorerna.

Du kan ta reda på detta genom att använda en fulltextfråga med hjälp av variabler och T-SQL-aggregationer enligt följande:

DECLARE @TotalParkingSensorLikes INT
DECLARE @TotalTouchSensorLikes INT
DECLARE @TotalOtherSensorLikes INT
 
 
DECLARE @TotalOrders INT
 
 
SET @TotalOrders=(SELECT COUNT(*) FROM dbo.CarOrder)
SET @TotalParkingSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Parking'))
SET @TotalTouchSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Touch'))
SET @TotalOtherSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Touch AND NOT Parking'))
 
  
-- Total parking sensors likes vs touch sensors
SELECT @TotalOrders AS TotalOrders,@TotalTouchSensorLikes AS Total_Parking_Sensor_Likes,
(@TotalTouchSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalParkingSensorLikes AS Total_Touch_Sensor_Likes,
(@TotalParkingSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalOtherSensorLikes AS Total_Other_Sensor_Likes,
(@TotalOtherSensorLikes*100/@TotalOrders) AS PercentLikes

Utgången kan ses enligt följande:

Sammanfattning av analysresultat

Vi kan dra slutsatsen att kunderna föredrog bilens Touch Sensor funktion över Reverse Parking Sensor funktion. De var dock de enda sensorerna som kunderna gillade. Och den funktion de gillade mest, som är Touch Sensor, tar bara 23 procent av alla funktioner de gillade.

Analys 2:Fulltextsökning för körhjälp och varningar

Om vi ​​nu antar att det var under den här säsongen som biltillverkningsföretaget introducerade ett par körassistansfunktioner inklusive några varningar.

Företaget skulle vilja veta följande saker:

  1. Vilka typer av körvarningar och assistansfunktioner tyckte kunderna om?
  2. Hur många kunder gillade kombinationen av varnings- och assistansfunktioner?
  3. Kan vi utföra en åldersbaserad analys av de kunder som gillade både varnings- och assistansfunktioner?

Sökning av körvarningar och assistansfunktioner som kunder föredras

Vi kan söka efter körvarningar och assistansfunktioner som kunderna gillade med hjälp av en fulltextfråga, men vi bör komma ihåg att ordet "Detektera" kan också användas som ett alternativ till "Varningar" enligt följande:

--Searching driving alerts and assistance features liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)
')

Resultaten av ovanstående fulltextfråga är följande:

Så, med hjälp av en fulltextfråga, har vi hittat svaret på den första företagsfrågan om vilka typer av funktioner och varningar kunderna föredrar.

Man kunde därför dra slutsatsen att kunderna gillade följande typer av körvarningar och assistansfunktioner:

  1. Lane Change Alert
  2. Hill Assist
  3. Kollisionsdetektering
  4. Däcktrycksvarning

Sök efter kunder som gillar alla körvarningar och assistansfunktioner

En lite mer komplicerad fråga är att ta reda på hur många kunder som gillade alla körhjälpsfunktioner och varningar, och detta kan besvaras med en fulltextfråga enligt följande:

--Searching order where both alerts and driving assistance features are liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) AND (FORMSOF(INFLECTIONAL,Alerts) OR FORMSOF(INFLECTIONAL,DETECT)
)')

Utgången är som följer:

Så det finns fyra beställningar där kunderna gillade både körhjälpsfunktioner och varningar.

Åldersbaserad analys av de kunder som gillade körhjälp och varningsfunktioner

För att få mer information kommer vi att försöka förstå de körhjälpsfunktioner och varningar som kunderna gillade baserat på deras ålder.

Du kan också utföra detta genom att använda kombinationen av en fulltextfråga och analytiska funktioner som tillhandahålls i T-SQL enligt följande:

-- Age based analysis of customers liking all driving alerts and assistance features
SELECT DISTINCT(CustomerAge),TotalOrders=COUNT(*) OVER (Partition BY CustomerAge),
FIRST_VALUE(CustomerAge) OVER (Order by CustomerAge) as YoungestCustomer,
LAG(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as YoungerCustomerOrSameAge,
LEAD(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as OlderCustomerOrSameAge,
FeaturesLiked as Driving_Assistance_or_Alerts_Features
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)')
ORDER BY TotalOrders DESC

Utgången är som följer:

Se artikeln The Art of Aggregating Data in SQL from Simple to Sliding Aggregations för att lära dig mer om hur du använder analytiska funktioner i T-SQL.

Sammanfattning av analysresultat

I ljuset av ovanstående analys med hjälp av Full-Text Search är det tydligt att de körhjälp och körvarningsfunktioner som kunderna gillade mestadels tillhör åldersgruppen 35 år.

Så kunderna i åldern 35 gillade de här funktionerna mest, medan den yngsta kunden som gillade dessa funktioner är 18 år.

Den äldsta kunden som gillade dessa funktioner är 52 år gammal.

Man kan dra slutsatsen från analysen ovan att de flesta kunder mellan 18 och 52 njöt av körhjälpen och körvarningsfunktionerna, där kunderna som gillade dessa funktioner mer än andra är 35 år gamla.

Grattis, du har framgångsrikt lärt dig hur man utför en något komplex produktanalys med hjälp av fulltextsökning.

Saker att göra

Nu när du kan göra produktanalysen med fulltextsökning rekommenderar jag att du provar följande:

  1. Försök att få korrelerad information genom att hitta de kunder som gillade både sensorer och körassistansfunktionerna men inte varningarna när de köpte bilen/bilarna.
  2. Håll den här artikeln i åtanke och sök efter de kunder som gillade varningarna men inte körassistansfunktionerna.
  3. Försök att utföra kunders åldersbaserade analys för sensorerna liknande den vi utförde för körassistans och varningsfunktioner.

  1. Infogar bild i BLOB Oracle 10g

  2. Hur TIMESTAMP() fungerar i MariaDB

  3. Hur man använder parameter med LIKE i SQL Server Compact Edition

  4. Tips för att använda SQL Server med Salesforce