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

Eseguire l'analisi del prodotto utilizzando la ricerca full-text di SQL Server. Parte 1

Questo articolo considera come eseguire l'analisi di base del prodotto utilizzando la ricerca full-text.

Inoltre, i lettori impareranno alcuni esempi pratici di analisi dei prodotti per quanto riguarda le vendite con l'aiuto di query full-text.

In poche parole, questo articolo sottolinea l'importanza della ricerca full-text, fornendo informazioni dettagliate sui dati, oltre a rispondere a molte domande di vendita dal punto di vista aziendale senza la necessità di adottare metodologie più sofisticate, che però hanno i loro vantaggi.

Informazioni sull'analisi del prodotto

Diamo prima un'occhiata all'analisi del prodotto.

Cos'è l'analisi del prodotto?

L'analisi del prodotto dal punto di vista aziendale è il metodo per analizzare il tuo prodotto e le sue vendite (dati) in modo tale da aiutarti a comprendere i punti di forza e di debolezza del tuo prodotto.

Ad esempio, il top management di un'azienda di vendita di automobili potrebbe voler conoscere tutte le caratteristiche dell'auto relative alla sicurezza, alla protezione e ai sensori per renderla un punto di forza per la propria auto.

Un altro esempio è quando un'azienda potrebbe essere interessata a vedere tutti i prodotti venduti durante una stagione piovosa che contengono "pioggia", "impermeabile" o "impermeabile" (nella descrizione) per capire se i clienti desiderano acquistare nuovi prodotti per un periodo piovoso stagione (da loro) o meno.

Perché è necessaria l'analisi del prodotto?

L'analisi del prodotto è la chiave per un'attività di successo e può aiutare a far emergere i vantaggi e gli svantaggi di un'azienda.

Può anche aiutare l'azienda a prendere decisioni migliori in base agli acquisti esistenti.

Oltre a ciò, l'analisi del prodotto può aiutare l'azienda a comprendere le tendenze del business e in che direzione stanno andando.

Come eseguire l'analisi del prodotto?

Per prima cosa, il modo base per analizzare il tuo prodotto è eseguire query SQL sul database che contiene il prodotto e i suoi dati di vendita.

Tuttavia, un modo migliore per ottenere maggiori informazioni consiste nell'utilizzare la ricerca full-text per interrogare il database delle vendite poiché offre criteri di ricerca migliorati che non sono disponibili nelle query SQL generali.

Analisi del prodotto con limitazione della ricerca full-text

Sebbene sia possibile eseguire un'analisi considerevolmente buona di un prodotto con la ricerca di testo completo, ha i suoi limiti.

Per un'analisi e un reporting più flessibili e approfonditi dei tuoi dati supportati da un'infrastruttura appositamente costruita, devi sviluppare una soluzione di data warehouse di business intelligence.

Prerequisiti

Esamina i prerequisiti per eseguire l'analisi del prodotto utilizzando la ricerca full-text che verrà visualizzata più avanti in questo articolo.

Forti competenze T-SQL

Questo articolo si aspetta che i lettori (che intendono implementare l'analisi del prodotto) abbiano solide competenze T-SQL e siano in grado di scrivere ed eseguire comodamente query SQL sui database.

Conoscenza di base e avanzata della ricerca full-text

L'articolo presuppone che i lettori che intendono implementare la procedura dettagliata utilizzando la ricerca full-text abbiano una conoscenza abbastanza buona della ricerca full-text e dei suoi usi.

Fare riferimento all'articolo Implementazione della ricerca full-text in SQL Server 2016 per utenti avanzati per ottenere una comprensione di livello avanzato della ricerca full-text se si conoscono già le nozioni di base.

Tuttavia, consultare l'articolo Implementazione della ricerca full-text in SQL Server 2016 per principianti se è necessario sviluppare una conoscenza di base prima di iniziare con gli usi avanzati della ricerca full-text.

Ricerca full-text installata

Inoltre, questo articolo prevede che la ricerca full-text sia già installata sull'istanza SQL.

Si prega di installare la ricerca full-text sul server SQL come segue:

  1. Esegui il programma di installazione SQL.
  2. Esegui file di installazione.
  3. Aggiungi come funzionalità.
  4. Scegli il tuo server attuale.
  5. Seleziona la caratteristica dell'istanza da aggiungere.

Fare riferimento all'articolo Implementazione della ricerca full-text in SQL Server 2016 per i principianti per ottenere informazioni dettagliate sui passaggi sopra menzionati.

Infine, controlla lo stato della ricerca full-text eseguendo il seguente script T-SQL sul database master:

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

L'output dovrebbe essere il seguente (se la ricerca full-text è stata installata correttamente):

Preparazione della ricerca full-text per l'analisi del prodotto

Prepararsi a eseguire query full-text per eseguire l'analisi del prodotto dopo aver impostato un database di esempio.

Imposta database di esempio (CarPlus)

Si prega di impostare un database di esempio chiamato CarPlus come segue:

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

Identifica il prodotto

Il campione CarPlus database contiene le seguenti informazioni, che vengono archiviate in un'unica tabella per semplificare la complessità strutturale del database e concentrarsi interamente sull'analisi del prodotto:

  1. Numero d'ordine (per l'auto acquistata)
  2. L'età del cliente che acquista il prodotto (auto)
  3. Caratteristiche (dell'auto) che sono piaciute al cliente

Tieni presente che il prodotto che abbiamo scelto per l'analisi in questo articolo è l'auto acquistata da un cliente.

Tuttavia, potremmo essere più interessati alle funzionalità che il cliente ha apprezzato quando ha acquistato l'auto perché queste funzionalità hanno informazioni cruciali per l'azienda.

Il CarOrder la tabella del database è rappresentata come segue:

Crea un catalogo full-text

Il primo passaggio una volta che il database di esempio (CarPlus) è stato creato e popolato correttamente è creare un catalogo full-text.

Ciò consente di implementare la ricerca full-text.

Crea un catalogo full-text eseguendo il seguente script T-SQL sul database di esempio:

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

Definisci un indice full-text nella colonna FeaturesLiked

Dal momento che FeaturesLiked colonna sarà la colonna centrale utilizzata nell'analisi del prodotto, dobbiamo definire un indice full-text su di essa per eseguire query full-text.

Scrivi il seguente script T-SQL per definire un indice full-text:

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

Tieni presente che puoi definire un indice full-text solo su una colonna della tabella, quindi sceglilo con molta saggezza.

Ordini totali per età dei clienti

Facciamo prima una rapida analisi per vedere quante auto sono state vendute ai clienti appartenenti a una particolare fascia di età eseguendo il seguente script:

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

L'output è il seguente:

L'analisi diventerà più interessante quando applichiamo la ricerca full-text.

Analisi delle caratteristiche di sicurezza dei bambini (ricerca full-text)

L'azienda è impaziente di conoscere le funzioni di sicurezza dei bambini che i clienti hanno apprezzato quando hanno acquistato le auto.

Trovare le 3 principali funzioni di sicurezza dei bambini che i clienti hanno apprezzato

Cerchiamo prima di tutto di trovare le 3 principali funzioni di sicurezza dei bambini che i clienti hanno apprezzato quando hanno acquistato l'auto, e questo può essere trovato utilizzando la ricerca di testo completo come segue:

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

I risultati sono i seguenti:

Trovare funzioni di sicurezza per bambini diverse da Isofix e Blocco di sicurezza

Tuttavia, per assicurarci che queste siano le uniche due funzioni di sicurezza per bambini che sono piaciute ai clienti che hanno acquistato le auto (in questa stagione), dobbiamo modificare la nostra query Full-Text per esaminare se ci sono altre funzioni di sicurezza per bambini:

Per trovarlo, esegui la seguente query di ricerca full-text:

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

L'output è il seguente:

Riepilogo dei risultati dell'analisi

Alla luce dei risultati di cui sopra, possiamo facilmente affermare che al cliente sono piaciute le seguenti caratteristiche di sicurezza per i bambini:

  1. Accessori per seggiolini per bambini Isofix
  2. Blocco di sicurezza per bambini

Ora ci restano le due seguenti possibilità:

  1. Queste sono le uniche funzioni per la sicurezza dei bambini offerte dall'azienda.
  2. C'erano alcune altre funzioni di sicurezza per i bambini offerte dall'azienda, ma i clienti non le preferivano quando acquistavano le auto.

Sulla base dei risultati, dobbiamo assicurarci che queste funzioni di sicurezza per i bambini non vengano sostituite o escluse nella prossima stagione poiché sembrano essere un forte punto di forza per l'azienda.

Analisi delle caratteristiche dei freni

La prossima cosa che l'azienda deve vedere è che tipo di funzionalità relative ai freni sono piaciute ai clienti in modo che possa concentrarsi su quelle funzionalità nelle prossime vendite.

Cerca le caratteristiche dei freni che sono piaciute ai clienti

Per trovare le 5 principali funzionalità relative ai freni che sono piaciute ai clienti, possiamo eseguire la seguente query full-text:

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

L'output è il seguente:

Riepilogo dei risultati dell'analisi

Come risultato della query Full-Text sopra, ora sappiamo che le caratteristiche relative ai freni che piacevano ai clienti al momento dell'acquisto di auto erano le seguenti:

  1. Sistema di frenata antibloccaggio avanzato
  2. Freni a disco avanzati

Sembra che tra le tante funzionalità relative ai freni, in questa stagione, i clienti abbiano scelto le due di cui sopra e forse qualche informazione in più potrebbe aiutare l'azienda a migliorare le proprie decisioni future.

Congratulazioni, hai imparato con successo come eseguire un'analisi del prodotto utilizzando la ricerca full-text.

Rimani in contatto poiché la parte 2 di questo articolo contiene una forma leggermente più avanzata di analisi del prodotto utilizzando la ricerca full-text.

Cose da fare

Ora che puoi eseguire un'analisi del prodotto con la ricerca full-text, prova quanto segue:

  1. Cerca di ottenere informazioni correlate trovando i clienti che hanno apprezzato sia i freni che le funzioni di sicurezza per i bambini al momento dell'acquisto dell'auto.
  2. Tenendo presente questo articolo, cerca i clienti che hanno apprezzato i accessori per seggiolini per bambini Isofix funzione ma non il Blocco di sicurezza per bambini caratteristica.
  3. Prova a cercare i clienti a cui non sono piaciuti i freni a disco avanzati ma mi è piaciuto Sistema di frenata antibloccaggio avanzato .