⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 olapexample.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program; if not, write to the Free Software
 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

 /**
  * Title: XELOPES Data Mining Library
  * Description: The XELOPES library is an open platform-independent and data-source-independent library for Embedded Data Mining.
  * Copyright: Copyright (c) 2002 Prudential Systems Software GmbH
  * Company: ZSoft (www.zsoft.ru), Prudsys (www.prudsys.com)
  * @author Carsten Weisse
  * @author Michael Thess
  * @version 1.2
  */
package com.prudsys.pdm.Examples;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.olap.query.enumerations.DimensionStepTypeEnum;
import javax.olap.query.enumerations.OperatorTypeEnum;
import javax.olap.query.enumerations.SetActionTypeEnum;
import javax.olap.query.enumerations.SortTypeEnum;

import com.prudsys.pdm.Core.MiningAttribute;
import com.prudsys.pdm.Core.MiningDataSpecification;
import com.prudsys.pdm.Cwm.Core.Attribute;
import com.prudsys.pdm.Input.Records.Csv.MiningCsvStream;
import com.prudsys.pdm.Olap.OlapEngine;
import com.prudsys.pdm.Olap.Cursor.CubeCursor;
import com.prudsys.pdm.Olap.Cursor.DimensionCursor;
import com.prudsys.pdm.Olap.Cursor.EdgeCursor;
import com.prudsys.pdm.Olap.Metadata.Cube;
import com.prudsys.pdm.Olap.Metadata.CubeClass;
import com.prudsys.pdm.Olap.Metadata.CubeDimensionAssociation;
import com.prudsys.pdm.Olap.Metadata.Dimension;
import com.prudsys.pdm.Olap.Metadata.DimensionClass;
import com.prudsys.pdm.Olap.Metadata.Measure;
import com.prudsys.pdm.Olap.Metadata.MeasureClass;
import com.prudsys.pdm.Olap.Metadata.Schema;
import com.prudsys.pdm.Olap.Metadata.SchemaClass;
import com.prudsys.pdm.Olap.Metadata.Measures.AggregationMeasure;
import com.prudsys.pdm.Olap.Metadata.Measures.BinaryOperatorMeasure;
import com.prudsys.pdm.Olap.Query.Core.CubeView;
import com.prudsys.pdm.Olap.Query.Core.DimensionStepManager;
import com.prudsys.pdm.Olap.Query.Core.DimensionView;
import com.prudsys.pdm.Olap.Query.Core.EdgeView;
import com.prudsys.pdm.Olap.Query.Core.MeasureView;
import com.prudsys.pdm.Olap.Query.DimensionFilters.AttributeFilter;
import com.prudsys.pdm.Olap.Query.Sorting.AttributeSort;
import com.prudsys.pdm.Olap.Resource.Connection;

 /**
  * Example of how to use Xelopes OLAP server.
  */
 public class OlapExample extends BasisExample {

   /**
    * Empty constructor.
    */
   public OlapExample() {
   }

   /**
    * Create OLAP schema with one cube. Use native CWM methods.
    *
    * @throws Exception couldn't run CWM methods
    */
   private void runCwm() throws Exception {

     // Create local OLAP engine:
     OlapEngine olap = new OlapEngine();

     // Open data source:
     MiningCsvStream inputStream = new MiningCsvStream("data/csv/carsales.csv");
     inputStream.open();

     // Assign source stream to OLAP engine:
     olap.setInputStream(inputStream);

     // Create dimensions:
     Dimension product = (Dimension) olap.getDimension().createDimension();
     product.setName("Product");
     Attribute productAtt = olap.getInputAttribute("product");
     product.addFeature(productAtt);

     Dimension geog = (Dimension) olap.getDimension().createDimension();
     geog.setName("Geography");
     Attribute countryAtt = olap.getInputAttribute("country");
     geog.addFeature(countryAtt);
     Attribute cityAtt = olap.getInputAttribute("city");
     geog.addFeature(cityAtt);

     Dimension time = (Dimension) olap.getDimension().createDimension();
     time.setName("Time");
     Attribute timeAtt = olap.getInputAttribute("time");
     time.addFeature(timeAtt);

     Dimension channel = (Dimension) olap.getDimension().createDimension();
     channel.setName("Channel");
     Attribute channelAtt = olap.getInputAttribute("channel");
     channel.addFeature(channelAtt);

     // Create an overall holding schema:
     javax.olap.serversidemetadata.Schema dimensionalSchema = olap.getSchema().createSchema();
     dimensionalSchema.addDimension(product);
     dimensionalSchema.addDimension(geog);
     dimensionalSchema.addDimension(time);
     dimensionalSchema.addDimension(channel);

     // Create the cube:
     javax.olap.serversidemetadata.Cube salesCube = olap.getCube().createCube();
     salesCube.setName("Sales Cube");

     // Add measures:
     Measure sales = (Measure) olap.getMeasure().createMeasure();
     sales.setName("Sales");
     sales.setOwner(salesCube);

     Measure cost = (Measure) olap.getMeasure().createMeasure();
     cost.setName("Cost");
     cost.setOwner(salesCube);

     Measure Profit = (Measure) olap.getMeasure().createMeasure();
     Profit.setName("Profit");
     Profit.setOwner(salesCube);

     // Create the four cube dimension associations:
     CubeDimensionAssociation prodAsso = (CubeDimensionAssociation) olap.getCubeDimensionAssociation().createCubeDimensionAssociation();
     prodAsso.setDimension(product);
     salesCube.addCubeDimensionAssociation(prodAsso);

     CubeDimensionAssociation geogAsso = (CubeDimensionAssociation) olap.getCubeDimensionAssociation().createCubeDimensionAssociation();
     geogAsso.setDimension(geog);
     salesCube.addCubeDimensionAssociation(geogAsso);

     CubeDimensionAssociation timeAsso = (CubeDimensionAssociation) olap.getCubeDimensionAssociation().createCubeDimensionAssociation();
     timeAsso.setDimension(time);
     salesCube.addCubeDimensionAssociation(timeAsso);

     CubeDimensionAssociation channAsso = (CubeDimensionAssociation) olap.getCubeDimensionAssociation().createCubeDimensionAssociation();
     channAsso.setDimension(channel);
     salesCube.addCubeDimensionAssociation(channAsso);

     // Add cube to the schema:
     dimensionalSchema.addCube(salesCube);

     System.out.println("schema: " + dimensionalSchema);
   }


   /**
    * Create OLAP connection object.
    *
    * @return connection object
    * @throws Exception couldn't create OLAP connection
    */
   private javax.olap.resource.Connection createOlapConnection() throws Exception {

     // Define initial context:
     Hashtable env = new Hashtable();
     String factoryClassName = com.prudsys.pdm.Olap.Resource.ConnectionFactory.class.
         getName();
     env.put(Context.INITIAL_CONTEXT_FACTORY, factoryClassName);
     Context initCtx = new InitialContext(env);

     // Obtain JOLAP ConnectionFactory from JNDI tree:
     javax.olap.resource.ConnectionFactory cf = (javax.olap.resource.
                                                 ConnectionFactory)
         initCtx.lookup("JOLAPServer");

     // Create connection specification:
     javax.olap.resource.ConnectionSpec cs = cf.createConnectionSpec();
     cs.setName("test");
     cs.setPassword("tester");

     // Establish connection to the OLAP resource:
     javax.olap.resource.Connection conn = cf.getConnection(cs);

     return conn;
   }

   /**
    * Create OLAP schema with one cube. Use local methods.
    *
    * @param conn connection with local OLAP object
    * @throws Exception couldn't create OLAP schema
    */
   private void createOlapSchema(Connection conn) throws Exception {

     // Get OLAP engine of connection:
     OlapEngine olap = conn.getOlapEngine();

     // Open data source:
     MiningCsvStream inputStream = new MiningCsvStream("data/csv/carsales.csv");
     inputStream.open();

     // Assign source stream to OLAP engine:
     olap.setInputStream(inputStream);

     // Create flat dimensions:
     DimensionClass dimClass = (DimensionClass) olap.getDimension();
     Dimension product = dimClass.createDimension("Product", "product");
     Dimension time    = dimClass.createDimension("Time", "time");
     Dimension channel = dimClass.createDimension("Channel", "channel");

     // Create hierarchical dimension:
     Dimension geog    = dimClass.createHierachicalDimension("Geography");
     geog.addInputAttribute( olap.getInputAttribute("country") );  // level 0
     geog.addInputAttribute( olap.getInputAttribute("city") );     // level 1

     // Create measures:
     MeasureClass measClass = (MeasureClass) olap.getMeasure();
     Measure sales  = measClass.createAggregationMeasure("Sales",
       AggregationMeasure.SUM, olap.getInputAttribute("sales") );
     Measure cost   = measClass.createAggregationMeasure("Cost",
       AggregationMeasure.SUM, olap.getInputAttribute("cost") );
     Measure profit = measClass.createBinaryOperatorMeasure("Profit",
       BinaryOperatorMeasure.MINUS, sales, cost);

     // Create measure dimension:
     Dimension meas    = dimClass.createMeasureDimension("Measures");
     meas.addInputAttribute(sales);
     meas.addInputAttribute(cost);
     meas.addInputAttribute(profit);

     // Create an overall holding schema:
     SchemaClass schemaClass  = (SchemaClass) olap.getSchema();
     Schema dimensionalSchema = schemaClass.createSchema("All");
     dimensionalSchema.addDimension(product);
     dimensionalSchema.addDimension(geog);
     dimensionalSchema.addDimension(time);
     dimensionalSchema.addDimension(channel);
     dimensionalSchema.addDimension(meas);

     // Create the cube:
     CubeClass cubeClass = (CubeClass) olap.getCube();
     Cube salesCube = cubeClass.createCube("Sales Cube");

     // Create the four cube dimension associations:
     salesCube.addDimension(product);
     salesCube.addDimension(geog);
     salesCube.addDimension(time);
     salesCube.addDimension(channel);
     salesCube.addDimension(meas);

     // Add cube to the schema:
     dimensionalSchema.addCube(salesCube);

     // Add schema to OLAP engine:
     olap.setCurrentSchema(dimensionalSchema);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -