sql >> Database teknologi >  >> RDS >> Sqlserver

Lær at udføre produktanalyse med SQL Server fuldtekstsøgning. Del 2

Denne artikel er dedikeret til en lidt mere kompleks produktanalyse med Full-Text Search i modsætning til den første del, hvor vi så på, hvordan man udfører en grundlæggende produktanalyse.

Her vil læserne implementere nogle omfattende eksempler på produktanalyse ud fra et salgssynspunkt ved hjælp af Full-Text-forespørgsler.

Denne artikel udfolder styrken af ​​Full-Text-forespørgsler, når de bruges sammen med analytiske funktioner til at udføre en produktanalyse.

Forudsætninger

Jeg foreslår, at du gennemgår forudsætningerne for denne artikel, før du begynder at implementere eksempler på produktanalyse.

Del 1. Essentials

Vi antager, at du har gennemgået Lær at udføre produktanalyse ved hjælp af SQL Server Full-Text Search. Del 1 og har evnen til at udføre en grundlæggende produktanalyse ved hjælp af eksemplerne nævnt i første del.

Forståelse af T-SQL og fuld tekstsøgning

For at føle sig godt tilpas, mens de læser denne artikel, anbefaler vi læserne at have en god forståelse af T-SQL-scripts og fuldtekstsøgning.

Se Implementering af fuldtekstsøgning i SQL Server 2016 for avancerede brugere for at få en avanceret forståelse af fuldtekstsøgning, forudsat at du allerede er fortrolig med dets grundlæggende. Alligevel anbefaler vi at gennemgå artiklen Implementing Full-Text Search i SQL Server 2016 for begyndere, hvis du har brug for at udvikle en grundlæggende forståelse, før du fortsætter med avanceret brug af Full-Text Search.

Fuldtekstsøgning installeret

For at fortsætte med artiklen skal du sikre dig, at du har installeret fuld tekstsøgning på din SQL-instans.

Følg disse trin for at installere fuldtekstsøgning på SQL-serveren:

  1. Kør SQL Installer.
  2. Kør installationsfilen.
  3. Tilføj som en funktion.
  4. Vælg din nuværende server.
  5. Vælg den instansfunktion, der skal tilføjes.

Du kan også henvise til artiklen Implementering af fuldtekstsøgning i SQL Server 2016 for begyndere for at få detaljerede oplysninger om trinene nævnt ovenfor.

Eksempeldatabase (CarPlus)

Du bør følge instruktionerne i den første del, hvis du endnu ikke har opsat prøvedatabasen. Bemærk, at du bliver nødt til at konfigurere CarPlus eksempeldatabase for at implementere eksemplerne i denne artikel.

Fuldtekstkatalog og Fuldtekstindeks

Vi forventer også, at du definerer Full-Text-kataloget og Full-Text-indekset i kolonnen FeaturesLiked.

Se venligst Lær at udføre produktanalyse ved hjælp af SQL Server Full-Text Search. Del 1 for at udføre ovenstående trin, medmindre du allerede har gennemført dem.

Analyse 1:Fuldtekstsøgning efter sensorer

Lad os sige, at vi havde flere ud af kassen-sensorer leveret med bilen, og nu er topledelsen ivrig efter at vide følgende ting:

  1. Kunde kunderne, der købte bilerne, lide nogen ud af boksen-sensorer?
  2. Hvilken slags sensorer kunne de lide?
  3. Hvor mange sensorer af en bestemt type kunne de lide?
  4. Kan vi sammenligne alle de forskellige sensorer, som kunderne kunne lide?

Du kan finde svarene på alle disse spørgsmål ved hjælp af fuldtekstsøgning.

Søgesensorer foretrukket af kunder

For at vide, om kunderne kunne lide nogen af ​​bilsensorerne, da de afgav deres ordre, skal vi køre en fuldtekstforespørgsel som følger:

--Se ordrer, hvor kunder kunne lide SensorsSELECTCarOrderId,FeaturesLikedFROM dbo.CarOrderWHERE CONTAINS(FeaturesLiked, 'Sensor') 

Du vil derefter se følgende resultater:

En ting er sikkert:Kunderne kunne lide sensorer, når de købte deres biler. Det skyldes, at fuldtekstsøgning efter sensorer gav en række resultater.

Søgningen oplyser, at vi har mindst to typer sensorer, som kunderne kunne lide:

  1. Berøringssensor
  2. Parkeringssensor til bakning

Det er sikkert at sige, at kunderne i det mindste kunne lide de ovennævnte typer sensorer.

Søger efter alle parkeringssensorer, som kunder foretrækker

Nu skal vi bruge fuldtekstsøgning til at finde alle typer parkeringssensorer som vores kunder kunne lide.

Vi kan finde ud af dette ved at bruge NEAR med følgende søgetermer (som følger):

--Se ordrer, hvor kunder kunne lide parkeringssensorer SELECTFeaturesLikedFROM dbo.CarOrderWHERE CONTAINS(FeaturesLiked, 'Sensor NEAR Parking') 

Udgangen er som følger:

Som følge heraf ser der ud til at være syv af sådanne tilfælde, hvor kunder kunne lide Parkeringssensor . Vi skal dog gå dybere for at få mere information.

Søgesensorer, bortset fra parkeringssensorer, som kunder foretrækker

Nu vil vi gerne vide den anden side af historien, det vil sige at finde ud af, hvilke kunder der kunne lide sensorerne ud over Parkeringssensor .

Brug følgende fuldtekstforespørgsel til at søge efter de sensorer, som kunderne kunne lide, bortset fra Parkeringssensor :

--Se ordrer, hvor kunderne kunne lide andet end parkeringssensorerVÆLG CarOrderId,FeaturesLiked FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Parking') 

Resultaterne af ovenstående fuldtekstforespørgsel er som følger:

Bortset fra Parkeringssensor, kunderne kunne lide Touch Sensor .

Sammenligning af parkeringssensorer med berøringssensorer og med andre sensorer

Den næste store ting er at se, om vi kan sammenligne Parkeringssensor med Berøringssensor med andre typer sensorer, som kunderne kunne lide, når de afgav deres ordre om at købe en bil.

Vi er også nødt til at kende det samlede antal af ordrer i denne sæson for at gøre sammenligningen mere interessant.

Dette er dog ikke nok. Vi skal også forstå procentdelen af ​​ligheden mellem sensorerne.

Du kan finde ud af dette ved at bruge en fuldtekstforespørgsel ved hjælp af variabler og T-SQL-aggregationer som følger:

DECLARE @TotalParkingSensorLikes INTDECLARE @TotalTouchSensorLikes INTDECLARE @TotalOtherSensorLikes INT DECLARE @TotalOrders INT SET @TotalOrders=(VÆLG ANTAL(*) FRA dbo.CarOrder)SET @TotalParkingSensor(VÆLG dboCarkingSensor)(SELECT COUNT. INDEHOLDER(Features Liked,'Sensor NEAR Parking'))SET @TotalTouchSensorLikes=(VÆLG COUNT(*) FRA dbo.CarOrder HVOR INDEHOLDER(FeaturesLiked,'Sensor NEAR Touch'))SET @TotalOtherSensorLikes=(VÆLG COUNT.(*) FRA dbo. CarOrder WHERE INDEHOLDER(FeaturesLiked,'Sensor AND NOT Touch AND NOT Parking')) - Samlet antal parkeringssensorer, der kan lide vs berøringssensorer.VÆLG @TotalOrders AS TotalOrders,@TotalTouchSensorLikes AS Total_Parking_Sensor_Likes,(@TotalTouchSensorLikes*100)/ASPTotalLikes@LicentOrkes*100)/ASP AS Total_Touch_Sensor_Likes,(@TotalParkingSensorLikes*100/@TotalOrders) AS PercentLikes,@TotalOtherSensorLikes AS Total_Other_Sensor_Likes,(@TotalOtherSensorLikes*100/@TotalOrders) AS PercentLikes 

Outputtet kan ses som følger:

Oversigt over analyseresultater

Vi kan konkludere, at kunderne foretrak bilens Touch Sensor funktion over Parkeringssensoren bagtil funktion. Det var dog de eneste sensorer, som kunderne kunne lide. Og den funktion, de kunne lide mest, som er Touch Sensor, tager kun 23 procent af alle de funktioner, de kunne lide.

Analyse 2:Fuldtekstsøgning efter kørselshjælp og advarsler

Hvis vi nu antager, at det var i løbet af denne sæson, at bilfabrikanten introducerede et par køreassistentfunktioner, herunder nogle advarsler.

Virksomheden vil gerne vide følgende:

  1. Hvilke typer kørselsadvarsler og hjælpefunktioner kunne kunderne lide?
  2. Hvor mange kunder kunne lide kombinationen af ​​advarsler og assistancefunktioner?
  3. Kan vi udføre en aldersbaseret analyse af de kunder, der kunne lide både advarsler og assistancefunktioner?

Søgning af køreadvarsler og assistancefunktioner, som kunder foretrækker

Vi kan søge efter køreadvarsler og hjælpefunktioner, som kunderne kunne lide, ved at bruge en fuldtekstforespørgsel, men vi skal huske på, at ordet "Opdag" kan også bruges som et alternativ til “Alerts” som følger:

--Søger efter køreadvarsler og assistancefunktioner, som kunder kan lideSELECTCarOrderId,FeaturesLikedFROM dbo.CarOrderWHERE INDEHOLDER(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) ORFORMSOF(INFLECTIONAL,Alerts)ORFLECFORMAL')(INECT) /kode>

Resultaterne af ovenstående fuldtekstforespørgsel er som følger:

Så ved hjælp af en fuldtekstforespørgsel har vi fundet svaret på det første forretningsspørgsmål om de typer funktioner og advarsler, som kunderne foretrækker.

Det kunne derfor konkluderes, at kunderne kunne lide følgende typer kørselsadvarsler og hjælpefunktioner:

  1. Lane Change Alert
  2. Hill Assist
  3. Kollisionsdetektion
  4. Dæktryksadvarsel

Søger efter kunder, der kan lide alle køreadvarsler og assistancefunktioner

Et lidt mere kompliceret spørgsmål er at finde ud af, hvor mange kunder der kunne lide alle køreassistentfunktionerne og advarslerne, og dette kan besvares med en fuldtekstforespørgsel som følger:

--Søgerækkefølge, hvor både advarsler og køreassistance-funktioner kan lide af kunderSELECTCarOrderId,FeaturesLikedFROM dbo.CarOrderWHERE INDEHOLDER(FeaturesLiked,'FORMSOF(BØJNINGS-,Assisterende) OG (FORMSOF(INFLECTIONAL-FORMSOF,(INFLECTIONAL FORMSOF),(INFLECTIONAL FORMSOF) DETECT))')

Udgangen er som følger:

Så der er fire ordrer, hvor kunderne kunne lide både køreassistentfunktioner og advarsler.

Aldersbaseret analyse af de kunder, der kunne lide køreassistance og advarsler

For at få mere information vil vi forsøge at forstå de køreassistentfunktioner og advarsler, som kunderne kunne lide baseret på deres alder.

Du kan også udføre dette ved at bruge kombinationen af ​​en fuldtekstforespørgsel og analytiske funktioner i T-SQL som følger:

-- Aldersbaseret analyse af kunder, der kan lide alle køreadvarsler og assistancefunktioner. SELECT DISTINCT(CustomerAge),TotalOrders=COUNT(*) OVER (Partition BY CustomerAge),FIRST_VALUE(CustomerAge) OVER (Order by CustomerAge) as Youngest Customer ,LAG(KundeAlder,1,0) OVER (ORDER BY Customer Age) as YoungerCustomerOr Same Age,LEAD(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as OlderCustomerEller Samme Age,FunktionerLiked as Driving_Advanced_FORHELLER' Assisting) ORFORMSOF(INFLECTIONAL,Alerts)ORFORMSOF(INFLECTIONAL,Detect)')ORDER BY TotalOrders DESC 

Udgangen er som følger:

Se venligst artiklen The Art of Aggregating Data in SQL from Simple to Sliding Aggregations for at lære mere om, hvordan man bruger analytiske funktioner i T-SQL.

Oversigt over analyseresultater

I lyset af ovenstående analyse ved brug af Full-Text Search er det klart, at de funktioner til kørehjælp og køreadvarsel, som kunderne kunne lide, for det meste tilhører aldersgruppen på 35 år.

Så kunderne på 35 år kunne lide disse funktioner mest, mens den yngste kunde, der kunne lide disse funktioner, er på 18 år.

Den ældste kunde, der kunne lide disse funktioner, er 52 år gammel.

Det kan udledes af ovenstående analyse, at de fleste kunder i alderen mellem 18 og 52 nød køreassistance og køreadvarselsfunktionerne, hvor de kunder, der kunne lide disse funktioner mere end andre, er 35 år gamle.

Tillykke, du har med succes lært, hvordan du udfører en lidt kompleks produktanalyse ved hjælp af fuldtekstsøgning.

Ting at gøre

Nu hvor du kan lave produktanalysen med fuldtekstsøgning, opfordrer jeg dig til at prøve følgende:

  1. Prøv at få korreleret information ved at finde de kunder, der kunne lide både sensorer og køreassistentfunktionerne, men ikke advarslerne, da de købte bilen/bilerne.
  2. Med denne artikel i tankerne, søg efter de kunder, der kunne lide advarslerne, men ikke køreassistentfunktionerne.
  3. Prøv at udføre kundernes aldersbaserede analyse for sensorerne svarende til den, vi udførte for køreassistance og alarmfunktioner.

  1. MS Access Corruption Del 2:Bedste praksis for forebyggelse og genopretning

  2. Datasikkerhedsstyring

  3. Opførsel af NOT LIKE med NULL-værdier

  4. Find og erstat tekst i hele tabellen ved hjælp af en MySQL-forespørgsel