sql >> Databáze >  >> RDS >> Sqlserver

Proveďte analýzu produktu pomocí SQL Server Full-Text Search. Část 1

Tento článek se zabývá tím, jak provést základní analýzu produktu pomocí fulltextového vyhledávání.

Kromě toho se čtenáři dozvědí několik praktických příkladů produktové analýzy týkající se prodeje pomocí fulltextových dotazů.

Stručně řečeno, tento článek zdůrazňuje význam fulltextového vyhledávání, poskytuje vhled do dat a odpovídá na mnoho prodejních dotazů z obchodního hlediska, aniž by bylo nutné používat sofistikovanější metodiky, které však mají své výhody.

O analýze produktu

Nejprve se podívejme na analýzu produktu.

Co je analýza produktu?

Analýza produktu z obchodního hlediska je metoda analýzy vašeho produktu a jeho prodejů (dat) takovým způsobem, který vám pomůže pochopit silné a slabé stránky vašeho produktu.

Například vrcholový management společnosti zabývající se prodejem automobilů může chtít znát všechny funkce vozu související s bezpečností, zabezpečením a senzory, aby se stal silným prodejním argumentem pro jejich vůz.

Dalším příkladem je situace, kdy může mít firma zájem vidět všechny produkty prodávané během období dešťů, které obsahují „dešti“, „odolné proti sprše“ nebo „vodotěsné“ (v popisu), aby pochopili, zda si zákazníci chtějí koupit nějaké nové produkty do deštivého počasí. sezóna (od nich) nebo ne.

Proč je nutná analýza produktu?

Analýza produktu je klíčem k úspěšnému podnikání a může pomoci odhalit výhody a nevýhody podnikání.

Může také pomoci podniku činit lepší rozhodnutí na základě stávajících nákupů.

Kromě toho může produktová analýza pomoci podniku porozumět obchodním trendům a tomu, jakým směrem se ubírají.

Jak provést analýzu produktu?

Za prvé, základním způsobem analýzy vašeho produktu je spouštění SQL dotazů proti databázi, která obsahuje produkt a údaje o jeho prodeji.

Lepším způsobem, jak získat více informací, je použít Fulltextové vyhledávání k dotazu na vaši prodejní databázi, protože nabízí vylepšená vyhledávací kritéria, která nejsou dostupná v obecných SQL dotazech.

Analýza produktu s omezením fulltextového vyhledávání

Ačkoli lze pomocí Fulltextového vyhledávání provést značně dobrou analýzu produktu, má svá omezení.

Pro flexibilnější a hloubkovou analýzu a reportování vašich dat s podporou účelové infrastruktury musíte vyvinout řešení Business Intelligence Data Warehouse.

Předpoklady

Projděte si prosím nezbytné předpoklady, abyste mohli provést analýzu produktu pomocí Fulltextového vyhledávání, které bude uvedeno dále v tomto článku.

Silné znalosti T-SQL

Tento článek očekává, že čtenáři (zamýšlející implementovat analýzu produktu) budou mít dobré znalosti T-SQL a budou schopni pohodlně psát a spouštět SQL dotazy proti databázi (databázím).

Základní a pokročilé porozumění fulltextovému vyhledávání

Článek předpokládá, že čtenáři, kteří mají v úmyslu implementovat návod pomocí Fulltextového vyhledávání, poměrně dobře rozumí Fulltextovému vyhledávání a jeho použití.

Pokud jste již obeznámeni s jeho základy, přečtěte si článek Implementace fulltextového vyhledávání v SQL Server 2016 pro pokročilé uživatele, kde získáte porozumění fulltextovému vyhledávání na pokročilé úrovni.

Pokud však potřebujete získat základní znalosti, než začnete s pokročilým používáním fulltextového vyhledávání, projděte si prosím článek Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky.

Instalováno fulltextové vyhledávání

Kromě toho tento článek očekává, že budete mít ve své instanci SQL již nainstalované fulltextové vyhledávání.

Nainstalujte prosím Fulltextové vyhledávání na SQL server následovně:

  1. Spusťte instalační program SQL.
  2. Spusťte soubor nastavení.
  3. Přidat jako funkci.
  4. Vyberte svůj aktuální server.
  5. Vyberte funkci instance, kterou chcete přidat.

Podrobné informace o výše uvedených krocích naleznete v článku Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky.

Nakonec zkontrolujte stav fulltextového vyhledávání spuštěním následujícího skriptu T-SQL proti hlavní databázi:

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

Výstup by měl být následující (pokud je úspěšně nainstalováno Full-Text Search):

Příprava fulltextového vyhledávání pro analýzu produktu

Připravte se na spuštění fulltextových dotazů k provedení analýzy produktu po nastavení vzorové databáze.

Nastavení vzorové databáze (CarPlus)

Nastavte prosím vzorovou databázi s názvem CarPlus takto:

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

Identifikujte produkt

Ukázka CarPlus databáze obsahuje následující informace, které jsou uloženy v jediné tabulce, aby se zjednodušila složitost struktury databáze a plně se zaměřila na analýzu produktu:

  1. Číslo objednávky (pro zakoupený vůz)
  2. Věk zákazníka kupujícího produkt (auto)
  3. Vlastnosti (auta), které se zákazníkovi líbily

Vezměte prosím na vědomí, že produkt, který jsme vybrali pro analýzu v tomto článku, je vůz zakoupený zákazníkem.

Nás by však více mohly zajímat funkce, které se zákazníkovi líbily, když si vůz kupoval, protože tyto funkce mají pro firmu zásadní informace.

CarOrder tabulka databáze je reprezentována následovně:

Vytvořte fulltextový katalog

Prvním krokem po vytvoření a úspěšném naplnění vzorové databáze (CarPlus) je vytvoření fulltextového katalogu.

To umožňuje implementovat Full-Text Search.

Vytvořte prosím fulltextový katalog spuštěním následujícího skriptu T-SQL proti ukázkové databázi:

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

Definujte fulltextový index ve sloupci FeaturesLiked

Od Features Liked Sloupec bude centrálním sloupcem používaným v analýze produktu, musíme na něm definovat Full-Text Index, abychom mohli spouštět Fulltextové dotazy.

Chcete-li definovat fulltextový index, napište následující skript T-SQL:

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

Upozorňujeme, že fulltextový index můžete definovat pouze v jednom sloupci tabulky, proto jej prosím vybírejte velmi moudře.

Celkový počet objednávek podle věku zákazníků

Udělejme nejprve rychlou analýzu, abychom zjistili, kolik vozů bylo prodáno zákazníkům určité věkové skupiny spuštěním následujícího skriptu:

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

Výstup je následující:

Analýza bude zajímavější, když použijeme Full-Text Search.

Analýza prvků bezpečnosti dětí (fulltextové vyhledávání)

Firma touží po tom, aby věděla, jaké bezpečnostní prvky pro děti se zákazníkům líbily, když si auta kupovali.

Nalezení 3 nejlepších bezpečnostních prvků pro děti, které se zákazníkům líbily

Pojďme nejprve najít 3 nejlepší funkce pro bezpečnost dětí, které se zákazníkům líbily při koupi vozu, a to lze najít pomocí Fulltextového vyhledávání takto:

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

Výsledky jsou následující:

Nalezení jiných bezpečnostních prvků pro děti než Isofix a Safety Lock

Abychom se však ujistili, že se jedná o jediné dva bezpečnostní prvky pro děti, které se zákazníkům, kteří si vozy (v této sezóně) koupili, líbili, musíme upravit náš fulltextový dotaz, abychom prozkoumali, zda existují nějaké další bezpečnostní prvky pro děti:

Chcete-li to najít, spusťte následující dotaz fulltextového vyhledávání:

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

Výstup je následující:

Shrnutí výsledků analýzy

Ve světle výše uvedených výstupů můžeme snadno říci, že se zákazníkovi líbily následující bezpečnostní prvky pro děti:

  1. Upevnění dětských sedaček Isofix
  2. Dětská pojistka

Nyní nám zbývají dvě následující možnosti:

  1. Toto jsou jediné bezpečnostní funkce pro děti, které firma nabízí.
  2. Firma nabízela některé další bezpečnostní prvky pro děti, ale zákazníci je při nákupu aut neupřednostňovali.

Na základě výsledků se musíme ujistit, že tyto bezpečnostní prvky pro děti nebudou v příští sezóně nahrazeny nebo vyloučeny, protože se zdají být pro firmu silným prodejním argumentem.

Analýza funkcí brzd

Další věcí, kterou musí firma vidět, je, jaký typ funkcí souvisejících s brzdami se zákazníkům líbil, aby se na tyto funkce mohla zaměřit v nadcházejících prodejích.

Vyhledejte funkce brzd, které se zákazníkům líbily

Chcete-li najít Top 5 funkcí souvisejících s brzdou, které se zákazníkům líbily, můžeme spustit následující fulltextový dotaz:

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

Výstup je následující:

Shrnutí výsledků analýzy

Na základě výše uvedeného fulltextového dotazu nyní víme, že funkce související s brzdami, které se zákazníkům líbily v době nákupu vozů, byly následující:

  1. Pokročilý protiblokovací brzdový systém
  2. Pokročilé kotoučové brzdy

Zdá se, že z mnoha funkcí souvisejících s brzdami si zákazníci v této sezóně vybrali dvě výše uvedené a možná nějaké další informace mohou firmě pomoci zlepšit jejich budoucí rozhodnutí.

Gratulujeme, úspěšně jste se naučili provádět analýzu produktu pomocí Fulltextového vyhledávání.

Zůstaňte v kontaktu, protože část 2 tohoto článku obsahuje o něco pokročilejší formu analýzy produktu pomocí fulltextového vyhledávání.

Co dělat

Nyní, když můžete provést analýzu produktu pomocí fulltextového vyhledávání, vyzkoušejte následující:

  1. Snažte se získat související informace vyhledáním zákazníků, kteří si při koupi vozu oblíbili brzdy a bezpečnostní prvky pro děti.
  2. S ohledem na tento článek hledejte zákazníky, kterým se líbilo uchycení dětských sedaček Isofix funkce, ale nikoli Dětská pojistka funkce.
  3. Zkuste vyhledat zákazníky, kteří neměli rádi Pokročilé kotoučové brzdy ale líbilo se mu Pokročilý protiblokovací brzdový systém .


  1. SQL Server – chybí NATURAL JOIN / x JOIN y USING (pole)

  2. Funkce řetězce MariaDB (úplný seznam)

  3. Výběr náhodných řádků v MySQL

  4. Statické funkce a pod