分析のためにデータベースからデータをインポートする

概要

このチュートリアルは説明のみを目的としています。チュートリアルに示されている接続文字列は、インストールされたデータベースには接続しません。チュートリアルで説明したプロセスを実行できるように、独自のサーバーに AdventureWorks データベースをセットアップする場合は、この GitHub ページを参照してください。

このチュートリアルでは、SQLエディタを使用してデータベースから Origin ワークシートにデータをインポートする方法を示します。次に、フィルタ、統計など、データに対していくつかの操作を実行して、グラフ作成に必要な結果を取得します。

必要なOriginのバージョン:Origin 9.0 SR0以降

学習する項目

このチュートリアルでは、以下の項目について解説します。

  • 同じデータベースの2つのSQLクエリを、SQLエディタを使用して2つのブックデータにインポートする
  • ワークシートのデータにデータフィルタを適用する
  • 列の統計を実行する
  • 棒グラフなどのグラフを作成する

ステップ

サーバマシンnoho上にSQLサーバAdventureWorks2008を予めセットアップ済であることを想定しています。

データベースからデータをインポートする

  1. 新しいプロジェクトを開始します。データベースアクセスツールバーのSQLエディタを開くボタンをクリックしてSQLエディタを起動します。
    ImportDataDatabase 1.png
  2. メニューからファイル:接続文字列の編集を選択してテキストボックスに以下の接続文字列を入力します。
    Provider=SQLOLEDB.1; Password=labtalk2015; Persist Security Info=TRUE; USER ID=CONNECT; Initial Catalog=AdventureWorks2008; DATA SOURCE=noho
    
  3. テストボタンをクリックして接続を確認します。問題なければ、OKをクリックしてデータベースにアクセスします。
  4. 左上のパネルでProduction.Product 表をダブルクリックして右パネルに追加します。
  5. 結果データをプレビューボタンButton db Preview Import.pngをクリックして下のパネルでデータを参照します。
    ImportDataDatabase 3.png
  6. データをワークシートにインポートボタンButton db Import Data.pngをクリックしてアクティブなワークシートにデータをインポートします。
    ImportDataDatabase 4.png
  7. 新しいシートに、同じデータベースから他のSQLクエリーをベースにしたデータをインポートするには、SQLエディタダイアログのタイトルバーにある最初化ボタンをクリックして最小化します。
  8. Sheet1タブを右クリックして追加を選択し、新しいシートを追加します。
    ImportDataDatabase 5.png
  9. SQLエディタの最小化ボタンをクリックしてダイアログを再び大きくします。右パネルに、まだProduction: Productがある状態です。ここでは、これを無視して進めます。
  10. クエリー:LabTalkと選択してLabTalkサポート設定ダイアログを開きます。ダLabTalk置換(%,$)をするのチェックボックスを付けて、以下のスクリプトをテキストボックスに入力します。
    string strDateBegin1$ = "1/1/2003";
    string strDateEnd1$ = "12/31/2003";
    string strDateBegin2$ = "1/1/2004";
    string strDateEnd2$ = "12/31/2004";
    

    ダイアログは次のようになります。

    ImportDataDatabase 6.png
  11. OK をクリックして、SQLエディタに戻ります。次の SQL スクリプトを右上のパネルに配置して、既存のコンテンツ Production.Productを置き換えます。このスクリプトは、データベースから3つの列を抽出します。1 つは製品のカテゴリ名で、他の2つはそれぞれ2003と2004の各カテゴリの行の合計です。
    SELECT TABLE2003.Name, TABLE2003.LineTotalFor2003, TABLE2004.LineTotalFor2004
    FROM
            (SELECT Production.ProductCategory.Name, LINETOALANDNAME2003.LineTotalFor2003
            FROM 
                    (SELECT SUM(SALEANDPRODUCT2003.LineTotal) AS LineTotalFor2003, Production.ProductSubcategory.ProductCategoryID
                    FROM
                            (SELECT SALEINFO2003.LineTotal, PRODUCTINFO2003.ProductSubcategoryID
                            FROM
                                    (SELECT Sales.SalesOrderheader.OrderDate, Sales.SalesOrderDetail.LineTotal, Sales.SalesOrderDetail.ProductID
                                    FROM Sales.SalesOrderheader 
                                    INNER JOIN Sales.SalesOrderDetail 
                                    ON Sales.SalesOrderheader.SalesOrderID=Sales.SalesOrderDetail.SalesOrderID
                                    WHERE Sales.SalesOrderheader.OrderDate BETWEEN '%(strDateBegin1$)' AND '%(strDateEnd1$)') AS SALEINFO2003
                            INNER JOIN 
                                    (SELECT Production.Product.ProductID, Production.Product.ProductSubcategoryID
                                    FROM Production.Product) AS PRODUCTINFO2003
                            ON SALEINFO2003.ProductID=PRODUCTINFO2003.ProductID) AS SALEANDPRODUCT2003
                    INNER JOIN Production.ProductSubcategory 
                    ON SALEANDPRODUCT2003.ProductSubcategoryID=Production.ProductSubcategory.ProductSubcategoryID
                    GROUP BY Production.ProductSubcategory.ProductCategoryID) AS LINETOALANDNAME2003
            INNER JOIN Production.ProductCategory
            ON LINETOALANDNAME2003.ProductCategoryID=Production.ProductCategory.ProductCategoryID) AS TABLE2003
    INNER JOIN
            (SELECT Production.ProductCategory.Name, LINETOALANDNAME2004.LineTotalFor2004
            FROM 
                    (SELECT SUM(SALEANDPRODUCT2004.LineTotal) AS LineTotalFor2004, Production.ProductSubcategory.ProductCategoryID
                    FROM
                            (SELECT SALEINFO2004.LineTotal, PRODUCTINFO2004.ProductSubcategoryID
                            FROM
                                    (SELECT Sales.SalesOrderheader.OrderDate, Sales.SalesOrderDetail.LineTotal, Sales.SalesOrderDetail.ProductID
                                    FROM Sales.SalesOrderheader 
                                    INNER JOIN Sales.SalesOrderDetail 
                                    ON Sales.SalesOrderheader.SalesOrderID=Sales.SalesOrderDetail.SalesOrderID
                                    WHERE Sales.SalesOrderheader.OrderDate BETWEEN '%(strDateBegin2$)' AND '%(strDateEnd2$)') AS SALEINFO2004
                            INNER JOIN 
                                    (SELECT Production.Product.ProductID, Production.Product.ProductSubcategoryID
                                    FROM Production.Product) AS PRODUCTINFO2004
                            ON SALEINFO2004.ProductID=PRODUCTINFO2004.ProductID) AS SALEANDPRODUCT2004
                    INNER JOIN Production.ProductSubcategory 
                    ON SALEANDPRODUCT2004.ProductSubcategoryID=Production.ProductSubcategory.ProductSubcategoryID
                    GROUP BY Production.ProductSubcategory.ProductCategoryID) AS LINETOALANDNAME2004
            INNER JOIN Production.ProductCategory
            ON LINETOALANDNAME2004.ProductCategoryID=Production.ProductCategory.ProductCategoryID) AS TABLE2004
    ON TABLE2003.Name=TABLE2004.Name
    
  12. 最後のボタンButton db Preview LabTalk Substitute.png をクリックして置換変数付きのSQLクエリー文を表示します。結果データをプレビューボタンButton db Preview Import.pngをクリックして下のパネルでデータを参照します。
    ImportDataDatabase 7.png
  13. ワークシートにデータをインポートボタンButton db Import Data.pngをクリックしてアクティブなSheet2にクエリーをインポートします。
    ImportDataDatabase 8.png
  14. SQLエディタを閉じます。変更を保存するか尋ねられます。インポートボタンをクリックすると、クエリーの設定が自動でシートに保存されるので、いいえを選択することもできます。また、はいを選択して、今後の利用のためにアクティブシートのクエリーをODQファイルとして保存することもできます。

データフィルタと統計

  1. 上のセクションでインポートしたProduction.Productのデータシート(最初のデータ)をアクティブにします。
  2. I(ロングネームはStandardCost)を選択し、データフィルタを追加します。ワークシートデータ操作ツールバーでデータフィルタの追加/削除ボタンをクリックします。
    ImportDataDatabase 9.png
  3. 列ヘッダの左上ににフィルタアイコンが追加されます。クリックしてより大きいをコンテキストメニューから選択します。
    ImportDataDatabase 10.png
  4. ダイアログが開くので、デフォルトのの0のままOKボタンをクリックします。
    ImportDataDatabase 11.png
  5. 同様に列P(ロングネームはProductLine)にフィルタを追加して、以下のような条件を設定します。
    ImportDataDatabase 12.png
  6. 列IとJ(StandardCost および ListPrice)を選択し、メニューから統計:記述統計:列の統計を選択して列の統計ダイアログを開きます。
  7. グループを列Pに設定します。三角形のボタンをクリックして右側のリストから列Pを選択します。プロットタブを開いてボックスチャートをチェックします。
    ImportDataDatabase 13.png
  8. OK をクリックして実行します。
    ImportDataDatabase 14.png

レーダーチャート

  1. Sheet2を開きます。
  2. 3列すべてを選択して、作図:レーダー:レーダーを選択してレーダーチャートを作図します。
    ImportDataDatabase 15.png
  3. Clothing軸をダブルクリックして軸ダイアログを開きます。次の操作はOrigin 2017をベースにしていますので、注意してください。
  4. スケールタブを選択します。全ての軸に同じオプションを使用のチェックを外します。左パネルで、Axis1からAxis4を選択します。開始を0に設定し、主目盛主目盛の数にして6に設定します。適用ボタンをクリックします。
    ImportDataDatabase 18.png
  5. 左パネルで、Axis1からAxis4を選択したまま、目盛ラベルタブを開きます。目盛ラベルを表示軸の前が選択されています。このドロップダウンリストを開き、再度軸の前 を選択して、すべての軸に対してこれを適用します。
  6. 表示を、十進数: 1000とし、割る値を1000000に設定します。適用ボタンをクリックします。
    ImportDataDatabase 19.png
  7. スケールタブに戻ります。左パネルでAxis1 - Clothing のみを選択し、終了の値を1.5 にします。同様にしてAxis3 - Accessories および Axis4 - Componentsの終了の値をそれぞれ0.76に設定します。前の操作で割る値を1000000にしたので、終了の値を簡単に入力できます。
  8. OKボタンをクリックします。
    ImportDataDatabase 20.png
    4 つのカテゴリすべてについて、2004の行の合計が 2003の行の合計よりも大きいことがわかります。そしてBikesが最も大きくなっています。