sql >> Database >  >> RDS >> Sqlserver

Voer productanalyses uit met behulp van SQL Server Full-Text Search. Deel 1

In dit artikel wordt beschreven hoe u een basisproductanalyse uitvoert met Zoeken in volledige tekst.

Daarnaast leren de lezers enkele praktische voorbeelden van productanalyse met betrekking tot verkoop met behulp van Full-Text queries.

In een notendop, dit artikel benadrukt het belang van Full-Text Search, dat inzicht biedt in gegevens, samen met het beantwoorden van veel verkoopvragen vanuit zakelijk oogpunt zonder de noodzaak om meer geavanceerde methoden te gebruiken, die wel hun voordelen hebben.

Over productanalyse

Laten we eerst de productanalyse bekijken.

Wat is productanalyse?

Productanalyse vanuit zakelijk oogpunt is de methode om uw product en de verkoop (gegevens) op zo'n manier te analyseren dat het u helpt de sterke en zwakke punten van uw product te begrijpen.

Het topmanagement van een autoverkopend bedrijf wil bijvoorbeeld misschien alle autokenmerken weten die te maken hebben met veiligheid, beveiliging en sensoren om er een sterk verkoopargument voor hun auto van te maken.

Een ander voorbeeld is wanneer een bedrijf geïnteresseerd kan zijn om alle producten te zien die tijdens een regenseizoen worden verkocht en die 'regen', 'douchebestendig' of 'waterdicht' bevatten (in de beschrijving) om te begrijpen of de klanten nieuwe producten willen kopen voor een regenachtige dag. seizoen (van hen) of niet.

Waarom is productanalyse nodig?

Productanalyse is de sleutel tot een succesvol lopend bedrijf en het kan helpen om de plussen en minnen van een bedrijf naar voren te brengen.

Het kan het bedrijf ook helpen betere beslissingen te nemen op basis van de bestaande aankopen.

Afgezien daarvan kan productanalyse het bedrijf helpen bij het begrijpen van de zakelijke trends en welke kant ze opgaan.

Hoe productanalyse uitvoeren?

Om te beginnen is de basismanier om uw product te analyseren, door SQL-query's uit te voeren op de database die het product en de verkoopgegevens bevat.

Een betere manier om meer informatie te krijgen, is echter om Full-Text Search te gebruiken om uw verkoopdatabase te doorzoeken, aangezien deze verbeterde zoekcriteria biedt die niet beschikbaar zijn in algemene SQL-query's.

Productanalyse met beperking voor zoeken in volledige tekst

Hoewel een behoorlijk goede analyse van een product kan worden uitgevoerd met Full-Text Search, heeft het zijn eigen beperking.

Voor een meer flexibele en diepgaande analyse en rapportage van uw gegevens, ondersteund door een speciaal gebouwde infrastructuur, moet u een Business Intelligence Data Warehouse-oplossing ontwikkelen.

Vereisten

Doorloop de vereisten om productanalyses uit te voeren met Zoeken in volledige tekst, later in dit artikel.

Sterke T-SQL-vaardigheden

Dit artikel verwacht van de lezers (die van plan zijn de productanalyse te implementeren) over sterke T-SQL-vaardigheden te beschikken en in staat te zijn om comfortabel SQL-query's te schrijven en uit te voeren op de database(s).

Basis en geavanceerd begrip van zoeken in volledige tekst

Het artikel gaat ervan uit dat de lezers die van plan zijn de walkthrough te implementeren met Zoeken in volledige tekst een redelijk goed begrip hebben van Zoeken in volledige tekst en het gebruik ervan.

Raadpleeg het artikel Full-Text Search implementeren in SQL Server 2016 voor geavanceerde gebruikers om een ​​gevorderd begrip van Full-Text Search te krijgen als u al bekend bent met de basisprincipes.

Raadpleeg echter het artikel Full-Text Search implementeren in SQL Server 2016 voor beginners als u een basiskennis moet ontwikkelen voordat u aan de slag gaat met geavanceerd gebruik van Full-Text Search.

Zoeken in volledige tekst geïnstalleerd

Bovendien verwacht dit artikel dat Full-Text Search al op uw SQL-instantie is geïnstalleerd.

Installeer de Full-Text Search als volgt op de SQL-server:

  1. Voer het SQL-installatieprogramma uit.
  2. Voer het installatiebestand uit.
  3. Toevoegen als functie.
  4. Kies je huidige server.
  5. Selecteer instantiefunctie die moet worden toegevoegd.

Raadpleeg het artikel Full-Text Search implementeren in SQL Server 2016 voor beginners voor gedetailleerde informatie over de bovengenoemde stappen.

Controleer ten slotte de status van Zoeken in volledige tekst door het volgende T-SQL-script uit te voeren met de hoofddatabase:

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

De uitvoer zou als volgt moeten zijn (als Zoeken in volledige tekst is geïnstalleerd):

Zoeken in volledige tekst voorbereiden voor productanalyse

Bereid u voor om Full-Text-query's uit te voeren om productanalyses uit te voeren na het opzetten van een voorbeelddatabase.

Sampledatabase instellen (CarPlus)

Stel een voorbeelddatabase in met de naam CarPlus als volgt:

-- 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

Identificeer het product

Het voorbeeld CarPlus database bevat de volgende informatie, die is opgeslagen in een enkele tabel om de structurele complexiteit van de database te vereenvoudigen en om u volledig te concentreren op productanalyse:

  1. Bestelnummer (voor de gekochte auto)
  2. De leeftijd van de klant die het product (auto) koopt
  3. Kenmerken (van de auto) die de klant leuk vond

Houd er rekening mee dat het product dat we hebben gekozen voor de analyse in dit artikel de auto is die door een klant is gekocht.

We zijn echter misschien meer geïnteresseerd in de functies die de klant leuk vond toen hij de auto kocht, omdat deze functies cruciale informatie bevatten voor het bedrijf.

De CarOrder tabel van de database wordt als volgt weergegeven:

Maak een full-text catalogus

De eerste stap nadat de voorbeelddatabase (CarPlus) is gemaakt en met succes is gevuld, is het maken van een volledige tekstcatalogus.

Dit maakt het mogelijk om Full-Text Search te implementeren.

Maak een Full-Text Catalogus door het volgende T-SQL-script uit te voeren op de voorbeelddatabase:

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

Definieer een Full-Text index in de FeatureLiked kolom

Sinds FeaturesLiked kolom de centrale kolom wordt die wordt gebruikt in productanalyse, we moeten er een Full-Text Index op definiëren om Full-Text-query's uit te voeren.

Schrijf het volgende T-SQL-script om een ​​Full-Text Index te definiëren:

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

Houd er rekening mee dat u slechts een volledige tekstindex voor één kolom van de tabel kunt definiëren, dus kies deze zeer verstandig.

Totaal aantal bestellingen op leeftijd van de klant

Laten we eerst een snelle analyse maken om te zien hoeveel auto's er zijn verkocht aan de klanten die tot een bepaalde leeftijdsgroep behoren door het volgende script uit te voeren:

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

De uitvoer is als volgt:

De analyse wordt interessanter als we Full-Text Search toepassen.

Analyse van veiligheidskenmerken voor kinderen (zoeken in volledige tekst)

Het bedrijf wil graag weten welke veiligheidsvoorzieningen voor kinderen de klanten leuk vonden toen ze de auto's kochten.

De top 3 veiligheidsfuncties voor kinderen vinden die de klanten leuk vonden

Laten we eerst de top 3 van veiligheidsfuncties voor kinderen vinden die de klanten leuk vonden toen ze de auto kochten, en deze kunnen als volgt worden gevonden door Full-Text Search te gebruiken:

--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*"')

De resultaten zijn als volgt:

Andere veiligheidsvoorzieningen voor kinderen vinden dan Isofix en Safety Lock

Om er echter zeker van te zijn dat dit de enige twee veiligheidsvoorzieningen voor kinderen zijn die de klanten die de auto's kochten (in dit seizoen) leuk vonden, moeten we onze Full-Text-query aanpassen om te onderzoeken of er nog meer kinderveiligheidsvoorzieningen zijn:

Om dit te vinden, voert u de volgende zoekopdracht in volledige tekst uit:

--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*"')

De uitvoer is als volgt:

Samenvatting van analyseresultaten

In het licht van de bovenstaande resultaten kunnen we gemakkelijk zeggen dat de klant de volgende veiligheidsvoorzieningen voor kinderen goed vond:

  1. Isofix-bevestigingen voor kinderzitjes
  2. Kinderslot

We hebben nu de volgende twee mogelijkheden:

  1. Dit zijn de enige veiligheidsvoorzieningen voor kinderen die het bedrijf biedt.
  2. Er waren enkele andere kinderveiligheidsvoorzieningen die door het bedrijf werden aangeboden, maar de klanten gaven er niet de voorkeur aan bij het kopen van de auto's.

Op basis van de resultaten moeten we ervoor zorgen dat deze veiligheidsvoorzieningen voor kinderen het volgende seizoen niet worden vervangen of uitgesloten, aangezien ze een sterk verkoopargument voor het bedrijf lijken te zijn.

Analyse van remfuncties

Het volgende dat het bedrijf moet zien, is wat voor soort functies met betrekking tot remmen de klanten leuk vonden, zodat het zich bij de komende verkopen op die functies kan concentreren.

Zoeken naar remfuncties die klanten leuk vonden

Om Top 5 remgerelateerde functies te vinden die de klanten leuk vonden, kunnen we de volgende Full-Text-query uitvoeren:

-- 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)')

De uitvoer is als volgt:

Samenvatting van analyseresultaten

Als resultaat van de bovenstaande Full-Text-query weten we nu dat de kenmerken met betrekking tot remmen die de klanten leuk vonden op het moment dat ze auto's kochten, als volgt waren:

  1. Geavanceerd antiblokkeerremsysteem
  2. Geavanceerde schijfremmen

Het lijkt erop dat de klanten dit seizoen uit de vele functies met betrekking tot remmen de twee bovenstaande hebben gekozen, en misschien kan wat meer informatie het bedrijf helpen hun toekomstige beslissingen te verbeteren.

Gefeliciteerd, u heeft met succes geleerd hoe u een productanalyse uitvoert met Zoeken in volledige tekst.

Blijf op de hoogte, want deel 2 van dit artikel bevat een iets geavanceerdere vorm van een productanalyse met behulp van Full-Text Search.

Dingen om te doen

Nu u een productanalyse kunt uitvoeren met Zoeken in volledige tekst, kunt u het volgende proberen:

  1. Probeer gecorreleerde informatie te krijgen door de klanten te vinden die zowel remmen als veiligheidsvoorzieningen voor kinderen leuk vonden bij het kopen van de auto('s).
  2. Houd dit artikel in gedachten en zoek naar de klanten die de Isofix-bevestigingen voor kinderzitjes leuk vonden functie, maar niet het Kinderslot functie.
  3. Probeer te zoeken naar de klanten die Geavanceerde schijfremmen niet leuk vonden maar hield wel van Geavanceerd antiblokkeerremsysteem .


  1. Hoe een query in postgresql stoppen / beëindigen?

  2. MySQL-trigger na update alleen als rij is gewijzigd

  3. Resultaten krijgen tussen twee datums in PostgreSQL

  4. MySQL LOG2() Functie – Retourneer de Base-2 logaritme van een waarde