sql >> Databasteknik >  >> RDS >> Sqlserver

Utför produktanalys med SQL Server Full-Text Search. Del 1

Den här artikeln överväger hur man utför grundläggande produktanalyser med fulltextsökning.

Dessutom kommer läsarna att lära sig några praktiska exempel på produktanalys avseende försäljning med hjälp av fulltextfrågor.

I ett nötskal betonar den här artikeln vikten av fulltextsökning, som ger insikter i data, tillsammans med svar på många försäljningsfrågor från affärsmässig synvinkel utan att behöva anta mer sofistikerade metoder, som dock har sina fördelar.

Om produktanalys

Låt oss först ta en titt på produktanalys.

Vad är produktanalys?

Produktanalys ur affärsmässig synvinkel är metoden för att analysera din produkt och dess försäljning (data) på ett sådant sätt att den hjälper dig att förstå styrkorna och svagheterna hos din produkt.

Till exempel kanske den högsta ledningen för ett bilförsäljningsföretag vill veta alla bilfunktioner relaterade till säkerhet, säkerhet och sensorer för att göra den till ett starkt försäljningsargument för sin bil.

Ett annat exempel är när ett företag kan vara intresserade av att se alla produkter som säljs under en regnperiod som innehåller "regn", "duschtät" eller "vattentät" (i beskrivningen) för att förstå om kunderna vill köpa några nya produkter för en regnperiod säsong (från dem) eller inte.

Varför är produktanalys nödvändig?

Produktanalys är nyckeln till ett framgångsrikt drivande företag, och det kan hjälpa till att lyfta fram fördelarna och nackdelarna med ett företag.

Det kan också hjälpa företaget att fatta bättre beslut baserat på de befintliga köpen.

Förutom det kan produktanalys hjälpa företaget att förstå affärstrenderna och vilken väg de är på väg.

Hur utför man produktanalys?

För det första är det grundläggande sättet att analysera din produkt genom att köra SQL-frågor mot databasen som innehåller produkten och dess försäljningsdata.

Ändå är ett bättre sätt att få mer information att använda fulltextsökning för att söka efter din försäljningsdatabas eftersom den erbjuder förbättrade sökkriterier som inte är tillgängliga i allmänna SQL-frågor.

Produktanalys med begränsning av fulltextsökning

Även om en mycket bra analys av en produkt kan utföras med fulltextsökning, har den sin egen begränsning.

För en mer flexibel och djupgående analys och rapportering av din data med stöd av en specialbyggd infrastruktur måste du utveckla en Business Intelligence Data Warehouse-lösning.

Förutsättningar

Gå igenom förutsättningarna för att utföra produktanalyser med fulltextsökning som kommer upp senare i den här artikeln.

Starka T-SQL-kunskaper

Den här artikeln förväntar sig att läsarna (som avser att implementera produktanalysen) ska ha starka T-SQL-färdigheter och bekvämt kunna skriva och köra SQL-frågor mot databasen/databaserna.

Grundläggande och avancerad förståelse för fulltextsökning

Artikeln förutsätter att de läsare som tänker implementera genomgången med Full-Text Search har en ganska god förståelse för Full-Text Search och dess användningsområden.

Se artikeln 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 om du redan är bekant med dess grunder.

Men vänligen gå 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 börjar med avancerad användning av Full-Text Search.

Fulltextsökning installerad

Dessutom förväntar sig den här artikeln att du redan har fulltextsökning installerad på din SQL-instans.

Installera fulltextsökningen på SQL-servern enligt följande:

  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.

Se artikeln Implementering av fulltextsökning i SQL Server 2016 för nybörjare för att få detaljerad information om stegen som nämns ovan.

Kontrollera slutligen statusen för fulltextsökning genom att köra följande T-SQL-skript mot huvuddatabasen:

-- Is Full-Text Search installed then 1 or 0
SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]

Utdata ska vara som följer (om Full-Text Search har installerats):

Förbereder fulltextsökning för produktanalys

Förbered dig på att köra fulltextfrågor för att utföra produktanalys efter att du har skapat en exempeldatabas.

Konfigurera exempeldatabas (CarPlus)

Vänligen skapa en exempeldatabas som heter CarPlus enligt följande:

-- Create sample database (CarPlus)
CREATE DATABASE CarPlus;
GO
 
 
USE CarPlus;
 
-- (1) Create CarOrder table in the sample database
CREATE TABLE CarOrder (
    CarOrderId int NOT NULL IDENTITY(1,1),
    CustomerAge int,
    FeaturesLiked varchar(300) NOT NULL,
    CONSTRAINT [PK_CarOrder] PRIMARY KEY ([CarOrderId]))
 
 
-- (2) Add data to the table
SET IDENTITY_INSERT [dbo].[CarOrder] ON
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (1, 27, N'Traction Control System, Lane Change Alert, Reverse Parking Sensor, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (2, 43, N'Advanced Anti-lock Braking System, Immobiliser, Four Wheels Drive, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (3, 33, N'Traction Control System, Immobiliser, Hill Assist, Auto Climate Control, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (4, 35, N'Isofix child seat fittings, Lane Change Alert, Collision Detection, Start Button, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (5, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Reverse Parking Sensor, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (6, 27, N'Touch Sensor, Lane Change Alert, Child Safety Lock, Auto Climate Control, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (7, 33, N'Traction Control System, Lane Change Alert, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (8, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Collision Detection, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (9, 20, N'Traction Control System, Advanced Disc Brakes, Child Safety Lock, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (10, 27, N'Isofix child seat fittings, Remote Locking, Tyre Pressure Alert, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (11, 46, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (12, 46, N'Traction Control System, Immobiliser, Collision Detection, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (13, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Hill Assist, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (14, 33, N'Traction Control System, Lane Change Alert, Tyre Pressure Alert, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (15, 40, N'Isofix child seat fittings, Lane Change Alert, Hill Assist, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (16, 33, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (17, 27, N'Touch Sensor, Lane Change Alert, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (18, 18, N'Touch Sensor, Lane Change Alert, Collision Detection, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (19, 33, N'Isofix child seat fittings, Lane Change Alert, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (20, 33, N'Advanced Anti-lock Braking System, Advanced Disc Brakes, Child Safety Lock, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (21, 27, N'Advanced Anti-lock Braking System, Immobiliser, Child Safety Lock, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (22, 43, N'Advanced Anti-lock Braking System, Advanced Disc Brakes, Reverse Parking Sensor, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (23, 33, N'Advanced Anti-lock Braking System, Immobiliser, Child Safety Lock, Navigation System, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (24, 46, N'Advanced Anti-lock Braking System, Remote Locking, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (25, 43, N'Touch Sensor, Lane Change Alert, Hill Assist, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (26, 32, N'Advanced Anti-lock Braking System, Immobiliser, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (27, 32, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (28, 26, N'Touch Sensor, Lane Change Alert, Hill Assist, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (29, 43, N'Traction Control System, Lane Change Alert, Child Safety Lock, Start Button, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (30, 26, N'Touch Sensor, Remote Locking, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, Bluetooth')
SET IDENTITY_INSERT [dbo].[CarOrder] OFF;
GO

Identifiera produkten

Exemplet CarPlus databasen innehåller följande information, som lagras i en enda tabell för att förenkla databasens strukturella komplexitet och för att helt fokusera på produktanalys:

  1. Beställningsnummer (för den köpta bilen)
  2. Åldern på kunden som köper produkten (bilen)
  3. Funktioner (i bilen) som kunden gillade

Observera att produkten vi har valt för analysen i den här artikeln är bilen som köpts av en kund.

Men vi kanske är mer intresserade av de funktioner som kunden gillade när han köpte bilen eftersom dessa funktioner har avgörande information för verksamheten.

CarOrder tabellen i databasen representeras enligt följande:

Skapa en fulltextkatalog

Det första steget när exempeldatabasen (CarPlus) har skapats och fyllts i är att skapa en fulltextkatalog.

Detta gör det möjligt att implementera fulltextsökning.

Skapa en fulltextkatalog genom att köra följande T-SQL-skript mot exempeldatabasen:

-- Create Full-Text Catalog 
CREATE FULLTEXT CATALOG CarCatalog AS DEFAULT;  
GO  

Definiera ett fulltextindex i kolumnen FeaturesLiked

Sedan Gillade funktioner kolumnen kommer att vara den centrala kolumnen som används i produktanalys, vi måste definiera ett Full-Text Index på den för att köra Full-Text-frågor.

Skriv följande T-SQL-skript för att definiera ett fulltextindex:

-- Define Full-Text Index on FeaturesLiked
CREATE FULLTEXT INDEX ON dbo.CarOrder(FeaturesLiked)   
   KEY INDEX PK_CarOrder
   WITH STOPLIST = SYSTEM;  
GO 

Observera att du bara kan definiera ett fulltextindex i en kolumn i tabellen, så välj det mycket klokt.

Totalt antal beställningar efter kundernas ålder

Låt oss först göra en snabb analys för att se hur många bilar som såldes till kunder som tillhör en viss åldersgrupp genom att köra följande skript:

--View total orders by customers age
SELECT CustomerAge,count(CarOrderId) as TotalOrders FROM dbo.CarOrder
GROUP BY CustomerAge
ORDER BY count(CarOrderId) DESC

Utgången är som följer:

Analysen kommer att bli mer intressant när vi tillämpar Full-Text Search.

analys av barnsäkerhetsfunktioner (fulltextsökning)

Verksamheten är angelägen om att känna till barnsäkerhetsfunktionerna som kunderna gillade när de köpte bilarna.

Hitta de tre bästa barnsäkerhetsfunktionerna som kunderna gillade

Låt oss först hitta de tre bästa barnsäkerhetsfunktionerna som kunderna gillade när de köpte bilen, och detta kan hittas genom att använda fulltextsökning enligt följande:

--View Top 3 child safety features liked using full-text search
SELECT TOP 3
  O.CarOrderId
 ,O.CustomerAge
 ,O.FeaturesLiked
FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked, '"*child*"')

Resultaten är följande:

Hitta andra barnsäkerhetsfunktioner än Isofix och säkerhetslås

Men för att försäkra oss om att dessa är de enda två barnsäkerhetsfunktionerna som kunderna som köpte bilarna (den här säsongen) gillade, måste vi ändra vår fulltextfråga för att undersöka om det finns några fler barnsäkerhetsfunktioner:

För att hitta detta, kör följande fulltextsökning:

--View child safety features other than isofix and safety locked liked by customers
SELECT
  O.CarOrderId
 ,O.CustomerAge
 ,O.FeaturesLiked
FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked, '"*Child*" AND NOT "Child Safety Lock" AND NOT "Isofix*"')

Utgången är som följer:

Sammanfattning av analysresultat

Mot bakgrund av resultaten ovan kan vi enkelt säga att kunden gillade följande barnsäkerhetsfunktioner:

  1. Isofix-barnstolsbeslag
  2. Barnsäkerhetslås

Vi har nu följande två möjligheter:

  1. Detta är de enda barnsäkerhetsfunktionerna som företaget erbjuder.
  2. Det fanns några andra barnsäkerhetsfunktioner som erbjuds av företaget, men kunderna föredrog dem inte när de köpte bilarna.

Baserat på resultaten måste vi se till att dessa barnsäkerhetsfunktioner inte kommer att ersättas eller uteslutas under nästa säsong eftersom de verkar vara ett starkt försäljningsargument för verksamheten.

Bromsfunktionsanalys

Nästa sak för företaget att se är vilken typ av funktioner relaterade till bromsar kunderna gillade så att de kan fokusera på dessa funktioner i den kommande försäljningen.

Sök efter bromsfunktioner som kunderna gillade

För att hitta de fem bästa bromsrelaterade funktionerna som kunderna gillade kan vi köra följande fulltextfråga:

-- Searching top 5 features related to brakes liked by the customers (full-text query)
SELECT TOP 5 O.CustomerAge,O.FeaturesLiked FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,brake)')

Utgången är som följer:

Sammanfattning av analysresultat

Som ett resultat av Full-Text-frågan ovan vet vi nu att funktionerna relaterade till bromsar som kunderna gillade när de köpte bilar var följande:

  1. Avancerat låsningsfritt bromssystem
  2. Avancerade skivbromsar

Det verkar som att av de många funktionerna relaterade till bromsar, denna säsong, valde kunderna de två ovan, och kanske lite mer information kan hjälpa företaget att förbättra sina framtida beslut.

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

Håll kontakten eftersom del 2 av den här artikeln innehåller en något mer avancerad form av produktanalys med fulltextsökning.

Saker att göra

Nu när du kan göra en produktanalys med Full-Text Search, prova följande:

  1. Försök att få korrelerad information genom att hitta de kunder som gillade både bromsar och barnsäkerhetsfunktioner när de köpte bilen/bilarna.
  2. Med den här artikeln i åtanke, sök efter kunder som gillade Isofix-barnstolsbeslag funktionen men inte barnsäkerhetslåset funktion.
  3. Försök att söka efter kunder som inte gillade Avancerade skivbromsar men gillade Avancerat låsningsfritt bromssystem .


  1. Hur kan jag ställa in ett maximalt antal rader i MySQL-tabellen?

  2. Använder Robolectric med SQLiteAssetHelper

  3. Hur man får antalet dagar i en månad i MySQL

  4. Hur kan jag ställa in en String[]-parameter till en inbyggd fråga?