- 浏览: 185240 次
- 性别:
- 来自: wuhan
最新评论
-
chier_system:
现在才开始研究,继续往下看楼主的bi系列
四个开源商业智能平台比较 (一) -
hnuhwk:
你好 最近我在做mondrian的一个性能测试 有几个问题想和 ...
四个开源商业智能平台比较 (一) -
liskolnikov:
....估计kettle的意思是希望用户多提意见多报BUG,多 ...
Talend 的市场策略 -
RogerTu:
BIRT官方中文论坛:http://www.actuatech ...
BIRT (一) 安装BIRT -
xuxiangtour:
请问,能否有时间具体讲解一下pentaho的使用方法呢?非常感 ...
BIRT (一) 安装BIRT
以下这个例子来自birt 的官方教材,我没有改动任何的信息.
这个例子演示了从建立DataSource ,然后建立DataSet , 动态的根据输入数据输出report template .
关于Birt 的 API , 在 eclipse 的 help content 里面有,3.3 支持新的基于topic 的search ,可以帮我们简化搜索的topic , 其中有五个API (一共是5个) : Report Object Model API , Report Engine API , Birt Report Scripting API , Open Data Access API , Data Engine API .另外也提供详细的讲解每一个report 的元素的意思.非常好的一份资料 .
DECreateDynamicTable.java 例子code :
import java.io.IOException;
import java.util.ArrayList;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import com.ibm.icu.util.ULocale;
/**
* Dynamic Table BIRT Design Engine API (DEAPI) demo.
*/
public class DECreateDynamicTable
{
ReportDesignHandle designHandle = null;
ElementFactory designFactory = null;
StructureFactory structFactory = null;
public static void main( String[] args )
{
try
{
DECreateDynamicTable de = new DECreateDynamicTable();
ArrayList al = new ArrayList();
al.add("OFFICECODE");
al.add("CITY");
al.add("COUNTRY");
de.buildReport(al, "From Offices" );
}
catch ( IOException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch ( SemanticException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void buildDataSource( ) throws SemanticException
{
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
"Data Source", "org.eclipse.birt.report.data.oda.jdbc" );
dsHandle.setProperty( "odaDriverClass",
"org.eclipse.birt.report.data.oda.sampledb.Driver" );
dsHandle.setProperty( "odaURL", "jdbc:classicmodels:sampledb" );
dsHandle.setProperty( "odaUser", "ClassicModels" );
dsHandle.setProperty( "odaPassword", "" );
designHandle.getDataSources( ).add( dsHandle );
}
void buildDataSet(ArrayList cols, String fromClause ) throws SemanticException
{
OdaDataSetHandle dsHandle = designFactory.newOdaDataSet( "ds",
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" );
dsHandle.setDataSource( "Data Source" );
String qry = "Select ";
for( int i=0; i < cols.size(); i++){
qry += " " + cols.get(i);
if( i != (cols.size() -1) ){
qry += ",";
}
}
qry += " " + fromClause;
dsHandle.setQueryText( qry );
designHandle.getDataSets( ).add( dsHandle );
}
void buildReport(ArrayList cols, String fromClause ) throws IOException, SemanticException
{
//Configure the Engine and start the Platform
DesignConfig config = new DesignConfig( );
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine");
IDesignEngine engine = null;
try{
Platform.startup( config );
IDesignEngineFactory factory = (IDesignEngineFactory) Platform
.createFactoryObject( IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY );
engine = factory.createDesignEngine( config );
}catch( Exception ex){
ex.printStackTrace();
}
SessionHandle session = engine.newSessionHandle( ULocale.ENGLISH ) ;
try{
//open a design or a template
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign");
designFactory = designHandle.getElementFactory( );
buildDataSource();
buildDataSet(cols, fromClause);
TableHandle table = designFactory.newTableItem( "table", cols.size() );
table.setWidth( "100%" );
table.setDataSet( designHandle.findDataSet( "ds" ) );
PropertyHandle computedSet = table.getColumnBindings( );
ComputedColumn cs1 = null;
for( int i=0; i < cols.size(); i++){
cs1 = StructureFactory.createComputedColumn();
cs1.setName((String)cols.get(i));
cs1.setExpression("dataSetRow[\"" + (String)cols.get(i) + "\"]");
computedSet.addItem(cs1);
}
// table header
RowHandle tableheader = (RowHandle) table.getHeader( ).get( 0 );
for( int i=0; i < cols.size(); i++){
LabelHandle label1 = designFactory.newLabel( (String)cols.get(i) );
label1.setText((String)cols.get(i));
CellHandle cell = (CellHandle) tableheader.getCells( ).get( i );
cell.getContent( ).add( label1 );
}
// table detail
RowHandle tabledetail = (RowHandle) table.getDetail( ).get( 0 );
for( int i=0; i < cols.size(); i++){
CellHandle cell = (CellHandle) tabledetail.getCells( ).get( i );
DataItemHandle data = designFactory.newDataItem( "data_"+(String)cols.get(i) );
data.setResultSetColumn( (String)cols.get(i));
cell.getContent( ).add( data );
}
designHandle.getBody( ).add( table );
// Save the design and close it.
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$
designHandle.close( );
System.out.println("Finished");
}catch (Exception e){
e.printStackTrace();
}
}
}
这个例子一共有四个函数 :
1 . Main 函数: 这个例子简单之处在与它可以直接的运行,只要你修改了
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine"); 指向你自己的Birt Runtime 解压后的ReportEngine 目录.
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign"); 你可以从Birt 里面建立一个新的Report template.然后指向这个report 就可以了
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$ 指定一个你想保存的位置,c:/temp 目录存在你才能够保存到c:/temp 目录下.
2 . buildDataSource 函数把一个ReportDesignHandle 的 Data Source 初始化, setProperties 左边的String 是不能变的,Data Source 的名字可以随便取,取DataSet 的时候要根据这个名字来取.
3 . buildDataSet 通过拼sql 的方式 ,来build DataSet, 注意sql 别拼错了.
4 . buildReport 注意element 的初始化顺序.在所有的DataItem 外面都是一层Cell,Cell 外面才是row .这个例子使用的row 来拼成table 的,也可以用column 来拼,相对应的数据处理也是一个column 一个 column 的处理的了.
这个例子演示了从建立DataSource ,然后建立DataSet , 动态的根据输入数据输出report template .
关于Birt 的 API , 在 eclipse 的 help content 里面有,3.3 支持新的基于topic 的search ,可以帮我们简化搜索的topic , 其中有五个API (一共是5个) : Report Object Model API , Report Engine API , Birt Report Scripting API , Open Data Access API , Data Engine API .另外也提供详细的讲解每一个report 的元素的意思.非常好的一份资料 .
DECreateDynamicTable.java 例子code :
import java.io.IOException;
import java.util.ArrayList;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import com.ibm.icu.util.ULocale;
/**
* Dynamic Table BIRT Design Engine API (DEAPI) demo.
*/
public class DECreateDynamicTable
{
ReportDesignHandle designHandle = null;
ElementFactory designFactory = null;
StructureFactory structFactory = null;
public static void main( String[] args )
{
try
{
DECreateDynamicTable de = new DECreateDynamicTable();
ArrayList al = new ArrayList();
al.add("OFFICECODE");
al.add("CITY");
al.add("COUNTRY");
de.buildReport(al, "From Offices" );
}
catch ( IOException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch ( SemanticException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void buildDataSource( ) throws SemanticException
{
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
"Data Source", "org.eclipse.birt.report.data.oda.jdbc" );
dsHandle.setProperty( "odaDriverClass",
"org.eclipse.birt.report.data.oda.sampledb.Driver" );
dsHandle.setProperty( "odaURL", "jdbc:classicmodels:sampledb" );
dsHandle.setProperty( "odaUser", "ClassicModels" );
dsHandle.setProperty( "odaPassword", "" );
designHandle.getDataSources( ).add( dsHandle );
}
void buildDataSet(ArrayList cols, String fromClause ) throws SemanticException
{
OdaDataSetHandle dsHandle = designFactory.newOdaDataSet( "ds",
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" );
dsHandle.setDataSource( "Data Source" );
String qry = "Select ";
for( int i=0; i < cols.size(); i++){
qry += " " + cols.get(i);
if( i != (cols.size() -1) ){
qry += ",";
}
}
qry += " " + fromClause;
dsHandle.setQueryText( qry );
designHandle.getDataSets( ).add( dsHandle );
}
void buildReport(ArrayList cols, String fromClause ) throws IOException, SemanticException
{
//Configure the Engine and start the Platform
DesignConfig config = new DesignConfig( );
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine");
IDesignEngine engine = null;
try{
Platform.startup( config );
IDesignEngineFactory factory = (IDesignEngineFactory) Platform
.createFactoryObject( IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY );
engine = factory.createDesignEngine( config );
}catch( Exception ex){
ex.printStackTrace();
}
SessionHandle session = engine.newSessionHandle( ULocale.ENGLISH ) ;
try{
//open a design or a template
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign");
designFactory = designHandle.getElementFactory( );
buildDataSource();
buildDataSet(cols, fromClause);
TableHandle table = designFactory.newTableItem( "table", cols.size() );
table.setWidth( "100%" );
table.setDataSet( designHandle.findDataSet( "ds" ) );
PropertyHandle computedSet = table.getColumnBindings( );
ComputedColumn cs1 = null;
for( int i=0; i < cols.size(); i++){
cs1 = StructureFactory.createComputedColumn();
cs1.setName((String)cols.get(i));
cs1.setExpression("dataSetRow[\"" + (String)cols.get(i) + "\"]");
computedSet.addItem(cs1);
}
// table header
RowHandle tableheader = (RowHandle) table.getHeader( ).get( 0 );
for( int i=0; i < cols.size(); i++){
LabelHandle label1 = designFactory.newLabel( (String)cols.get(i) );
label1.setText((String)cols.get(i));
CellHandle cell = (CellHandle) tableheader.getCells( ).get( i );
cell.getContent( ).add( label1 );
}
// table detail
RowHandle tabledetail = (RowHandle) table.getDetail( ).get( 0 );
for( int i=0; i < cols.size(); i++){
CellHandle cell = (CellHandle) tabledetail.getCells( ).get( i );
DataItemHandle data = designFactory.newDataItem( "data_"+(String)cols.get(i) );
data.setResultSetColumn( (String)cols.get(i));
cell.getContent( ).add( data );
}
designHandle.getBody( ).add( table );
// Save the design and close it.
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$
designHandle.close( );
System.out.println("Finished");
}catch (Exception e){
e.printStackTrace();
}
}
}
这个例子一共有四个函数 :
1 . Main 函数: 这个例子简单之处在与它可以直接的运行,只要你修改了
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine"); 指向你自己的Birt Runtime 解压后的ReportEngine 目录.
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign"); 你可以从Birt 里面建立一个新的Report template.然后指向这个report 就可以了
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$ 指定一个你想保存的位置,c:/temp 目录存在你才能够保存到c:/temp 目录下.
2 . buildDataSource 函数把一个ReportDesignHandle 的 Data Source 初始化, setProperties 左边的String 是不能变的,Data Source 的名字可以随便取,取DataSet 的时候要根据这个名字来取.
3 . buildDataSet 通过拼sql 的方式 ,来build DataSet, 注意sql 别拼错了.
4 . buildReport 注意element 的初始化顺序.在所有的DataItem 外面都是一层Cell,Cell 外面才是row .这个例子使用的row 来拼成table 的,也可以用column 来拼,相对应的数据处理也是一个column 一个 column 的处理的了.
评论
1 楼
fire01312
2007-11-21
给个网址啊 ,我现在急切的研究birt,项目中要用。
另:帮我看看这种变态报表可以实现吗??
或者给点建议
我不知道如何放图片上去
我的邮箱是: helloliubo@163.com
QQ:309719996能和你交流下吗??
另:帮我看看这种变态报表可以实现吗??
或者给点建议
我不知道如何放图片上去
我的邮箱是: helloliubo@163.com
QQ:309719996能和你交流下吗??
发表评论
-
商业智能需要站在全局角度考虑问题
2008-03-21 12:26 2423首先看一下下面这个表样.这个表样是润乾的一个示例表样,接着介绍 ... -
在应用程序中集成Kettle
2008-03-20 13:40 3265在应用程序中集成Kettle 摘要:本文主要讨论如何在你自己 ... -
ETL性能优化
2008-03-20 13:36 3625现有orders 表和 orderdetails 表表示订单和 ... -
pentaho 1.5.5发布
2007-07-14 15:50 2985pentaho 1.5.5在7月13日发布 ... -
用Birt API 处理参数问题
2007-07-10 22:46 5083我们在使用Birt 的时候 ... -
BIRT (一) 安装BIRT
2007-06-27 21:49 5934商业智能(十八) 安装B ... -
eclipse europa 即将发布 birt 的新功能一览
2007-06-17 16:28 11724eclipse ... -
商业智能研究(十七) Mondrian 如何使用 materialized view
2007-06-10 18:48 4585商业智能研究(十七) Mondrian 如何使用 ma ... -
商业智能研究(十六)materialized view+dimension提高mondrian性能
2007-06-10 18:44 4099商业智能研究(十六) 用materialized vie ... -
商业智能研究(十五) materialized view+dimension提高mondrian性能
2007-06-10 18:34 3945materialized view+dimension提高mo ... -
商业智能研究(十四) mondrian + oracle 部署foodmart demo
2007-06-10 18:32 4189mondrian + oracle 部署foodmart de ... -
商业智能研究(十二) OLAP 相关的一些开源项目
2007-06-05 22:47 5235商业智能研究(十二) OL ... -
在tomcat上部署pentaho 1.5.3
2007-06-02 18:03 4342在tomcat上部署p ... -
商业智能平台研究(十一) BI基本概念
2007-05-22 21:41 6289商业智能平台研究(十 ... -
商业智能平台研究 (十) ETL 选型
2007-05-13 17:59 7789商业智能平台研究 (十) ETL 选型 ETL (Extra ... -
商业智能平台研究(九) ETL 中的数据质量控制
2007-05-13 17:54 4912商业智能平台研究(九) ... -
商业智能平台研究(八) ETL 之metadata
2007-05-13 17:38 5661商业智能平台研究(八 ... -
商业智能平台研究(七) ETL 的选型
2007-05-13 17:33 4676商业智能平台研究(七) ... -
四个开源商业智能平台比较(六)
2007-04-23 12:27 7501四个开源商业智能平台 ... -
四个开源商业智能平台比较(五)
2007-04-22 14:18 8353四个开源商业智能平台 ...
相关推荐
1. `env.py`:游戏环境的实现,可能包含与Flappy Bird游戏API的接口。 2. `model.py`:DQN网络模型的定义,可能使用TensorFlow或PyTorch等深度学习框架。 3. `agent.py`:智能体的实现,包括经验回放缓冲区、策略...
本项目基于DQN算法对经典游戏Flappy Bird进行了训练,使得AI能够自主学习游戏策略,实现较高的得分。 Flappy Bird是一款挑战玩家反应速度和空间判断的游戏,其目标是控制小鸟避开柱子,尽可能地飞行更远。在DQN的...
在本项目中,“flappybird强化学习”是一个利用深度学习技术,特别是强化学习算法来实现自动玩游戏Flappy Bird的示例。Flappy Bird是一款非常流行的手机游戏,玩家需要控制一只小鸟避开柱子以获得高分。这个项目的...
PyTorch是Facebook开源的一个强大的深度学习库,以其动态计算图和易于使用的API而备受青睐。在实现DQN时,PyTorch可以轻松构建和训练神经网络模型,同时提供便捷的工具进行数据处理和模型优化。 在这个项目中,我们...
学习并熟练掌握Bluebird,能极大地提升JavaScript异步编程的效率和质量。在实际项目中,可以根据需求选择适合的方法,实现高效、可靠的异步控制。在阅读`bluebird-api-master`这个压缩包中的内容,我们可以期待找到...
在本文中,我们将深入探讨如何使用神经网络和遗传算法来实现对经典游戏Flappy Bird的机器学习。Flappy Bird是一款非常流行的休闲游戏,其简单但极具挑战性的玩法使其成为研究机器学习技术的理想平台。 首先,我们...
《使用Keras与Python实现强化学习:Flappy Bird游戏》 在当今的AI领域,强化学习(Reinforcement Learning,RL)已经成为了重要的研究方向,它通过与环境的交互学习最优策略,尤其在游戏控制方面表现出色。本项目...
微信小程序源码 富文本解析,折线图,MD5,bluebird(学习版)微信小程序源码 富文本解析,折线图,MD5,bluebird(学习版)微信小程序源码 富文本解析,折线图,MD5,bluebird(学习版)微信小程序源码 富文本解析,折线图,...
综上所述,"OpenCv制作的FlappyBird"项目展示了OpenCV在游戏开发中的创新应用,结合了图像处理、物体检测、机器学习等多个方面的知识,是学习和实践OpenCV技术的一个有趣案例。通过深入研究项目源码、观看成果视频并...
在FlappyBird的cocos2dx版本中,游戏场景、角色动画、碰撞检测等功能都通过cocos2dx的API实现。 2. 游戏对象:游戏中的Bird对象和管道(Pipes)对象是核心。Bird的移动和跳跃通过物理引擎模拟,而Pipes则动态生成,...
在这里,我们拥有的是自己制作的Flappy Bird游戏的完整源码以及相关的素材,这为我们提供了一个学习和理解游戏开发的绝佳机会。 首先,我们来看看"Swing"这个标签。Swing是Java的一种图形用户界面(GUI)工具包,...
《flappy bird》是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红。2014年2月,《Flappy Bird》被开发者...--------素材包括相关图片以及音效仅供学习参考
《Flappy Bird游戏素材解析与应用》 Flappy Bird是一款风靡全球的休闲游戏,以其简单易上手的操作和极具挑战性的玩法深受玩家喜爱。...这对于想要学习游戏开发或者想要改进自己作品的开发者来说,都是宝贵的学习资源。
这不仅是学习编程的好机会,也是锻炼逻辑思维和解决问题能力的过程。如果你是一名对编程感兴趣的学生或教师,这个资源包无疑是一个极好的实践项目,它将带你走进游戏开发的世界,体验从无到有的创造乐趣。
# DQN强化学习训练Flappy Bird游戏Python代码 基于TensorFlow和Pygame ## 介绍 DQN(Deep Q-Network)是一种卷积神经网络,基于Q学习的思想进行训练,其输入是原始像素,输出是估计未来奖励的值函数。 ## 安装依赖...
《Flappy Bird 图像音频资源解析》 在游戏开发领域,资源是构成游戏世界的基础,它们赋予游戏视觉和听觉的生动性。本资源包“flappybird图像音频资源包”便是针对经典游戏《Flappy Bird》而设计的,旨在为开发者...
9. **界面设计(UI Design)**:虽然Flappy Bird的界面简洁,但设计良好的UI可以增强游戏的吸引力。源码中包含了如何使用Java的Swing或JavaFX库来构建游戏界面的方法。 10. **调试与测试(Debugging and Testing)*...
《Flappy Bird Bot 使用强化学习》 在游戏开发和人工智能领域,强化学习(Reinforcement Learning,RL)已经成为一种热门的技术。本项目聚焦于利用强化学习来训练一个Flappy Bird游戏的自动玩家,即Flappy Bird Bot...
使用DQN自动玩flappybird,最近,github上有人放出使用DQN玩Flappy Bird的代码,https://github.com/yenchenlin1994/DeepLearningFlappyBird【1】 该repo通过结合之前的repo成功实现了这个想法。这个repo对整个实现...
Thunderbird是一款由Mozilla开发的开源电子邮件客户端,它提供了丰富的功能,包括邮件管理、新闻组、聊天和RSS阅读等。在日常使用中,为了防止数据丢失或进行迁移,定期备份Thunderbird的邮件设置和数据是非常重要的...