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

Naučte se provádět analýzu produktu pomocí fulltextového vyhledávání na serveru SQL. Část 2

Tento článek je věnován poněkud složitější produktové analýze s fulltextovým vyhledáváním na rozdíl od první části, kde jsme se podívali na to, jak provést základní analýzu produktu.

Zde čtenáři implementují několik komplexních příkladů analýzy produktu z hlediska prodeje pomocí fulltextových dotazů.

Tento článek odhaluje sílu fulltextových dotazů při použití s ​​analytickými funkcemi při provádění analýzy produktu.

Předpoklady

Než začnete implementovat příklady analýzy produktů, doporučuji vám projít si předpoklady tohoto článku.

Část 1. Základy

Předpokládáme, že jste prošli Naučte se provádět analýzu produktu pomocí SQL Server Full-Text Search. Část 1 a mít schopnost provést základní analýzu produktu pomocí příkladů uvedených v první části.

Pochopení T-SQL a fulltextového vyhledávání

Abyste se při čtení tohoto článku cítili pohodlně, doporučujeme čtenářům, aby dobře rozuměli skriptům T-SQL a fulltextovému vyhledávání.

Viz Implementace fulltextového vyhledávání v SQL Server 2016 pro pokročilé uživatele, kde získáte pokročilou úroveň porozumění fulltextovému vyhledávání za předpokladu, že jste již obeznámeni s jeho základy. Přesto vám doporučujeme projít si článek Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky, pokud potřebujete získat základní znalosti, než budete pokračovat s pokročilým používáním fulltextového vyhledávání.

Fulltext Search nainstalováno

Chcete-li úspěšně pokračovat v článku, ujistěte se, že jste na instanci SQL nainstalovali Full-Text Search.

Při instalaci Fulltextového vyhledávání na SQL server postupujte takto:

  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.

Můžete si také přečíst článek Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky získáte podrobné informace o výše uvedených krocích.

Ukázka databáze (CarPlus)

Pokud jste ještě nenastavili ukázkovou databázi, měli byste postupovat podle pokynů v první části. Upozorňujeme, že budete muset nastavit CarPlus ukázkovou databázi k implementaci příkladů v tomto článku.

Plnotextový katalog a fulltextový index

Očekáváme také, že definujete fulltextový katalog a fulltextový index ve sloupci FeaturesLiked.

Viz Naučte se provádět analýzu produktu pomocí fulltextového vyhledávání SQL Server. Část 1 k provedení výše uvedených kroků, pokud jste je ještě neprovedli.

Analýza 1:Fulltextové vyhledávání senzorů

Řekněme, že jsme s autem měli několik předdefinovaných senzorů a nyní se nejvyšší vedení těší na následující věci:

  1. Líbily se zákazníkům, kteří si auta koupili, nějaké senzory?
  2. Jaké senzory se jim líbily?
  3. Kolik senzorů konkrétního typu se jim líbilo?
  4. Můžeme porovnat všechny různé senzory, které si zákazníci oblíbili?

Odpovědi na všechny tyto otázky můžete najít pomocí Full-Text Search.

Vyhledávání senzorů preferovaných zákazníky

Abychom věděli, zda se zákazníkům při zadávání objednávky některý z automobilových senzorů líbil, musíme spustit fulltextový dotaz takto:

--View Orders where customers liked Sensors
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor')

Poté uvidíte následující výsledky:

Jedna věc je jistá:zákazníkům se při koupi auta líbily senzory ihned po vybalení. Je to proto, že Fulltextové vyhledávání senzorů vrátilo řadu výsledků.

Vyhledávání informuje, že máme minimálně dva typy senzorů, které si zákazníci oblíbili:

  1. Dotykový senzor
  2. Reverzní parkovací senzor

Lze s jistotou říci, že si zákazníci oblíbili minimálně výše uvedené typy senzorů.

Vyhledávání všech parkovacích senzorů preferovaných zákazníky

Nyní musíme použít fulltextové vyhledávání k nalezení všech typů parkovacích senzorů které se našim zákazníkům líbilo.

Můžeme to zjistit pomocí NEAR s následujícími vyhledávacími výrazy (následujícím způsobem):

--View Orders where customers liked parking sensors
SELECT
FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor NEAR Parking')

Výstup je následující:

V důsledku toho se zdá, že existuje sedm případů, kdy si zákazníci oblíbili parkovací senzor . Musíme však jít hlouběji, abychom získali více informací.

Vyhledávání jiných senzorů než parkovacích senzorů preferovaných zákazníky

Nyní bychom rádi znali druhou stránku věci, tedy zjistit, kterým zákazníkům se líbily jiné senzory než Parking Sensor .

Pomocí následujícího fulltextového dotazu vyhledejte senzory, které se zákazníkům líbily jiné než Parkovací senzor :

--View Orders where customers liked other than parking sensors
SELECT 
CarOrderId
,FeaturesLiked 
FROM dbo.CarOrder 
WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Parking')

Výsledky výše uvedeného fulltextového dotazu jsou následující:

Kromě parkovacího senzoru, zákazníkům se líbil Dotykový senzor .

Porovnání parkovacích senzorů s dotykovými senzory as jinými senzory

Další velkou věcí je zjistit, zda můžeme porovnat Parkovací senzor s Dotykovým senzorem s dalšími typy senzorů, které si zákazníci oblíbili, když zadávali své objednávky na nákup auta.

Aby bylo srovnání zajímavější, potřebujeme také znát celkový počet objednávek zadaných v této sezóně.

To však nestačí. Musíme také pochopit procento podobnosti mezi senzory.

Můžete to zjistit pomocí fulltextového dotazu s pomocí proměnných a agregací T-SQL takto:

DECLARE @TotalParkingSensorLikes INT
DECLARE @TotalTouchSensorLikes INT
DECLARE @TotalOtherSensorLikes INT
 
 
DECLARE @TotalOrders INT
 
 
SET @TotalOrders=(SELECT COUNT(*) FROM dbo.CarOrder)
SET @TotalParkingSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Parking'))
SET @TotalTouchSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Touch'))
SET @TotalOtherSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Touch AND NOT Parking'))
 
  
-- Total parking sensors likes vs touch sensors
SELECT @TotalOrders AS TotalOrders,@TotalTouchSensorLikes AS Total_Parking_Sensor_Likes,
(@TotalTouchSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalParkingSensorLikes AS Total_Touch_Sensor_Likes,
(@TotalParkingSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalOtherSensorLikes AS Total_Other_Sensor_Likes,
(@TotalOtherSensorLikes*100/@TotalOrders) AS PercentLikes

Výstup lze vidět následovně:

Shrnutí výsledků analýzy

Můžeme konstatovat, že zákazníci preferovali autoTouch Sensor funkce přes Reverzní parkovací senzor Vlastnosti. Byly to však jediné senzory, které si zákazníci oblíbili. A funkce, kterou si oblíbili nejvíce, je dotykový senzor, zabírá pouze 23 procent všech funkcí, které se jim líbily.

Analýza 2:Fulltextové vyhledávání jízdních asistencí a upozornění

Pokud nyní předpokládáme, že to bylo během této sezóny, kdy automobilka představila několik asistenčních funkcí včetně některých upozornění.

Firma by ráda věděla následující věci:

  1. Jaké typy upozornění na řízení a asistenčních funkcí se zákazníkům líbily?
  2. Kolik zákazníkům se líbila kombinace upozornění a asistenčních funkcí?
  3. Můžeme provést věkovou analýzu zákazníků, kteří si oblíbili upozornění i asistenční funkce?

Vyhledávání upozornění na řízení a asistenčních funkcí preferovaných zákazníky

Výstražné a asistenční funkce, které si zákazníci oblíbili, můžeme vyhledat pomocí fulltextového dotazu, ale měli bychom mít na paměti, že slovo “Detekovat“ lze také použít jako alternativu k „Upozornění“ takto:

--Searching driving alerts and assistance features liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)
')

Výsledky výše uvedeného fulltextového dotazu jsou následující:

Pomocí fulltextového dotazu jsme tedy našli odpověď na první obchodní otázku o typech funkcí a upozornění preferovaných zákazníky.

Dalo by se tedy dojít k závěru, že se zákazníkům líbily následující typy upozornění na řízení a asistenčních funkcí:

  1. Upozornění na změnu jízdního pruhu
  2. Hill Assist
  3. Detekce kolize
  4. Upozornění na tlak v pneumatikách

Vyhledávání zákazníků, kteří mají rádi všechna upozornění a asistenční funkce

Poněkud složitější otázkou je zjistit, kolika zákazníkům se líbily všechny asistenční funkce a upozornění pro řízení, a na to lze odpovědět fulltextovým dotazem takto:

--Searching order where both alerts and driving assistance features are liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) AND (FORMSOF(INFLECTIONAL,Alerts) OR FORMSOF(INFLECTIONAL,DETECT)
)')

Výstup je následující:

Existují tedy čtyři objednávky, u kterých si zákazníci oblíbili funkce asistenčních systémů a upozornění.

Věková analýza zákazníků, kteří si oblíbili funkce asistencí při řízení a upozornění

Abychom získali více informací, pokusíme se porozumět asistenčním funkcím a upozorněním, které si zákazníci oblíbili na základě jejich věku.

Můžete to provést také pomocí kombinace fulltextového dotazu a analytických funkcí poskytovaných v T-SQL takto:

-- Age based analysis of customers liking all driving alerts and assistance features
SELECT DISTINCT(CustomerAge),TotalOrders=COUNT(*) OVER (Partition BY CustomerAge),
FIRST_VALUE(CustomerAge) OVER (Order by CustomerAge) as YoungestCustomer,
LAG(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as YoungerCustomerOrSameAge,
LEAD(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as OlderCustomerOrSameAge,
FeaturesLiked as Driving_Assistance_or_Alerts_Features
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)')
ORDER BY TotalOrders DESC

Výstup je následující:

Další informace o tom, jak používat analytické funkce v T-SQL, naleznete v článku Umění agregace dat v SQL od jednoduchých po posuvné agregace.

Shrnutí výsledků analýzy

Ve světle výše uvedené analýzy pomocí fulltextového vyhledávání je jasné, že funkce asistenční a řidičské výstrahy, které si zákazníci oblíbili, patří většinou do věkové skupiny 35 let.

Tyto funkce se tedy nejvíce líbily zákazníkům ve věku 35 let, zatímco nejmladšímu zákazníkovi, kterému se tyto funkce líbily, je 18 let.

Nejstaršímu zákazníkovi, kterému se tyto funkce líbily, je 52 let.

Z výše uvedené analýzy lze usuzovat, že funkce asistenční a jízdní výstrahy využívali především zákazníci ve věku 18 až 52 let, přičemž zákazníkům, kteří si tyto funkce oblíbili více než ostatní, je 35 let.

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

Úkoly

Nyní, když můžete provést analýzu produktu pomocí Full-Text Search, doporučuji vám vyzkoušet následující:

  1. Snažte se získat související informace vyhledáním zákazníků, kterým se líbily jak senzory, tak funkce asistenčního řízení, ale ne upozornění, když si vůz koupili.
  2. Mějte na paměti tento článek a hledejte zákazníky, kterým se líbila upozornění, ale ne funkce asistencí při řízení.
  3. Zkuste provést analýzu zákazníků na základě věku pro senzory podobnou té, kterou jsme provedli pro asistenční a výstražné funkce.

  1. Heroku Postgres Error:PGError:ERROR:relační organizace neexistuje (ActiveRecord::StatementInvalid)

  2. Která je nejrychlejší? SELECT SQL_CALC_FOUND_ROWS FROM `tabulka` nebo SELECT COUNT(*)

  3. Odstraňování problémů s transakční replikací serveru SQL Server

  4. Jak se připojit k databázi AWS MySQL / MariaDB RDS nebo EC2 z MySQL WorkBench