sql >> データベース >  >> RDS >> Sqlserver

SQLServer全文検索を使用して製品分析を実行します。パート1

    この記事では、全文検索を使用して基本的な製品分析を実行する方法について検討します。

    さらに、読者は、フルテキストクエリを使用して、販売に関する製品分析のいくつかの実用的な例を学習します。

    一言で言えば、この記事は全文検索の重要性を強調し、データへの洞察を提供するとともに、ビジネスの観点から多くの販売クエリに答えるだけでなく、より洗練された方法論を採用する必要はありません。 / P>

    製品分析について

    最初に製品分析を見てみましょう。

    製品分析とは何ですか?

    ビジネスの観点からの製品分析は、製品とその売上(データ)を分析して、製品の長所と短所を理解するのに役立つ方法です。

    たとえば、自動車販売会社の経営陣は、安全性、セキュリティ、センサーに関連するすべての自動車機能を知りたい場合があります。これにより、自動車の強力なセールスポイントになります。

    もう1つの例は、雨季に販売された「雨」、「シャワープルーフ」、または「ウォータープルーフ」(説明内)を含むすべての製品を見て、顧客が雨季に新製品を購入したいかどうかを理解することに関心がある場合です。季節(彼らから)かどうか。

    なぜ製品分析が必要なのですか?

    製品分析は、ビジネスを成功させるための鍵であり、ビジネスの長所と短所を引き出すのに役立ちます。

    また、既存の購入に基づいてビジネスがより適切な決定を下すのにも役立ちます。

    それとは別に、製品分析は、ビジネスの傾向とその方向性を理解する上でビジネスを支援することができます。

    製品分析の実行方法

    1つには、製品を分析する基本的な方法は、製品とその販売データを含むデータベースに対してSQLクエリを実行することです。

    それでも、より多くの情報を取得するためのより良い方法は、全文検索を使用して販売データベースにクエリを実行することです。これは、一般的なSQLクエリでは使用できない改善された検索条件を提供するためです。

    全文検索の制限がある製品分析

    全文検索を使用すると、製品のかなり優れた分析を実行できますが、独自の制限があります。

    専用のインフラストラクチャに裏打ちされたデータのより柔軟で詳細な分析とレポートを作成するには、ビジネスインテリジェンスデータウェアハウスソリューションを開発する必要があります。

    前提条件

    この記事の後半で取り上げる全文検索を使用して製品分析を実行するには、前提条件を確認してください。

    強力なT-SQLスキル

    この記事では、読者(製品分析の実装を目的としている)が強力なT-SQLスキルを持ち、データベースに対してSQLクエリを快適に記述して実行できることを期待しています。

    全文検索の基本的および高度な理解

    この記事は、全文検索を使用してウォークスルーを実装する予定の読者が、全文検索とその使用法をかなりよく理解していることを前提としています。

    フルテキスト検索の基本に既に精通している場合は、上級ユーザー向けのSQL Server 2016でのフルテキスト検索の実装の記事を参照して、フルテキスト検索の高度なレベルを理解してください。

    ただし、フルテキスト検索の高度な使用を開始する前に基本的な理解を深める必要がある場合は、初心者向けの「SQLServer2016でのフルテキスト検索の実装」の記事を参照してください。

    全文検索がインストールされました

    さらに、この記事では、SQLインスタンスに全文検索がすでにインストールされていることを前提としています。

    次のように全文検索をSQLサーバーにインストールしてください。

    1. SQLインストーラーを実行します。
    2. セットアップファイルを実行します。
    3. 機能として追加します。
    4. 現在のサーバーを選択してください。
    5. 追加するインスタンス機能を選択します。

    上記の手順の詳細については、初心者向けの記事「SQLServer2016での全文検索の実装」を参照してください。

    最後に、マスターデータベースに対して次のT-SQLスクリプトを実行して、全文検索のステータスを確認します。

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

    出力は次のようになります(全文検索が正常にインストールされた場合):

    製品分析のための全文検索の準備

    サンプルデータベースを設定した後、フルテキストクエリを実行して製品分析を実行する準備をします。

    サンプルデータベース(CarPlus)を設定する

    CarPlusというサンプルデータベースを設定してください 次のように:

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

    製品を特定する

    サンプルCarPlus データベースには次の情報が含まれています。これらの情報は、データベースの構造の複雑さを簡素化し、製品分析に完全に集中するために1つのテーブルに格納されます。

    1. 注文番号(購入した車の場合)
    2. 商品(車)を購入する顧客の年齢
    3. 顧客が気に入った(車の)機能

    この記事で分析のために選択した製品は、顧客が購入した車であることに注意してください。

    ただし、これらの機能にはビジネスにとって重要な情報があるため、顧客が車を購入したときに気に入った機能にもっと興味があるかもしれません。

    CarOrder データベースのテーブルは次のように表されます:

    フルテキストカタログを作成する

    サンプルデータベース(CarPlus)が作成され、正常に入力された後の最初のステップは、フルテキストカタログを作成することです。

    これにより、全文検索を実装できます。

    サンプルデータベースに対して次のT-SQLスクリプトを実行して、フルテキストカタログを作成してください。

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

    FeaturesLiked列にフルテキストインデックスを定義する

    FeaturesLiked 以降 列は製品分析で使用される中央の列になります。フルテキストクエリを実行するには、列にフルテキストインデックスを定義する必要があります。

    次のT-SQLスクリプトを記述して、フルテキストインデックスを定義します。

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

    フルテキストインデックスはテーブルの1列にしか定義できないため、慎重に選択してください。

    顧客の年齢別の合計注文数

    まず、次のスクリプトを実行して、特定の年齢層に属する顧客に販売された車の数を確認するための簡単な分析を行います。

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

    出力は次のとおりです。

    全文検索を適用すると、分析はさらに興味深いものになります。

    子供の安全機能の分析(全文検索)

    ビジネスは、顧客が車を購入したときに気に入った子供の安全機能を知りたがっています。

    顧客が気に入った子供の安全機能のトップ3を見つける

    まず、顧客が車を購入したときに気に入った子供の安全機能のトップ3を見つけましょう。これは、次のように全文検索を使用して見つけることができます。

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

    結果は次のとおりです。

    IsofixとSafetyLock以外の子供の安全機能を見つける

    ただし、(今シーズンに)車を購入した顧客が気に入った2つの子供用安全機能だけを確認するには、フルテキストクエリを変更して、子供用安全機能が他にあるかどうかを調べる必要があります。

    これを見つけるには、次の全文検索クエリを実行します。

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

    出力は次のとおりです。

    分析結果の要約

    上記の出力に照らして、お客様は次の子供の安全機能を気に入ったと簡単に言えます。

    1. Isofixチャイルドシートフィッティング
    2. チャイルドセーフティロック

    現在、次の2つの可能性が残されています。

    1. これらは、ビジネスが提供する唯一の子供の安全機能です。
    2. ビジネスが提供する他の子供の安全機能がいくつかありましたが、顧客は車を購入するときにそれらを好みませんでした。

    結果に基づいて、これらの子供の安全機能は、ビジネスの強力なセールスポイントであると思われるため、次のシーズンに置き換えられたり除外されたりしないようにする必要があります。

    ブレーキ機能の分析

    ビジネスが次に確認するのは、顧客がブレーキに関連する機能の種類を確認して、今後の販売でそれらの機能に集中できるようにすることです。

    顧客が気に入ったブレーキ機能を検索する

    顧客が気に入ったブレーキ関連の上位5つの機能を見つけるために、次のフルテキストクエリを実行できます。

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

    出力は次のとおりです。

    分析結果の要約

    上記のフルテキストクエリの結果、顧客が車を購入するときに気に入ったブレーキに関連する機能は次のとおりであることがわかりました。

    1. 高度なアンチロックブレーキシステム
    2. 高度なディスクブレーキ

    ブレーキに関連する多くの機能の中から、今シーズン、顧客は上記の2つを選択したようです。おそらく、ビジネスが将来の意思決定を改善するのに役立つ情報がいくつかあるかもしれません。

    おめでとうございます。全文検索を使用して製品分析を実行する方法を正常に学習しました。

    この記事のパート2には、全文検索を使用した製品分析のもう少し高度な形式が含まれているため、連絡を取り合ってください。

    やるべきこと

    全文検索で商品分析を行えるようになったので、次のことを試してください。

    1. 車を購入するときにブレーキと子供の安全機能の両方が好きな顧客を見つけて、相関情報を取得してみてください。
    2. この記事を念頭に置いて、Isofixチャイルドシートフィッティングを気に入った顧客を検索してください 機能はありますが、チャイルドセーフティロックはありません 機能。
    3. 高度なディスクブレーキが気に入らなかった顧客を検索してみてください しかし、高度なアンチロックブレーキシステムが好きでした 。


    1. SQLエラー:ORA-00942テーブルまたはビューが存在しません

    2. ONUPDATEで次のORA-00907エラーが発生する

    3. SQL Serverを使用してソフトウェアバージョンを比較するにはどうすればよいですか?

    4. sys.dm_exec_requestsの基本