我需要在现有的spring boot Web应用程序中添加OLAP报告支持.我遇到过多种BI工具,如BIRT,JasperServer Report和Saiku,但对于所有这些工具,我必须使用已经创建的多维数据集.如果数据有任何修改,它将不会反映在我的报告中.
是否有任何第三方工具可以帮助我在运行时创建多维数据集或通过在运行时向多维数据集添加数据来生成报表?
每当与数据透视表进行交互时,我都非常难以使用Excel.添加/删除字段,更改过滤器或切片器,都需要在响应之前冻结几分钟的Excel.
看来生成的MDX效率极低.我可以理解他们必须动态生成MDX并且必须支持数据透视表的许多功能,但速度慢100倍是荒谬的.
当他们为行或列上的字段生成MDX时,他们使用DrilldownLevel(... [Property Dimension].[County])
我不确定Excel更复杂方法的目的是什么,但我希望有一些选项可以取消选中,以便Excel不需要使用DrilldownLevel函数.
相反,我通常省略Drilldownlevel函数,只做[Property Dimension].[County] .[County]来访问该属性.
使用Excel的MDX对同一结果集的查询需要5分钟,使用我的MDX需要不到5秒.
我已经验证了Excel渲染/格式化结果的速度不是很慢,因为我使用了Excel使用的MDX并直接在SSMS中运行它来验证时间.我可以在服务器上查看任务管理器,并在处理结果时观察CPU的流失情况.
注意,我不是责备服务器,因为我可以创建运行速度极快且提供相同结果的MDX查询.
如何让Excel生成更高效的MDX?我正在使用Excel 2010.
我听说powerpivot生成更高效的MDX,但是Powerpivot在SSAS之上不可用,因为它没有利用SSAS多维数据集.因此,对于为什么Powerpivot在SSAS之上不起作用的短暂咆哮.如果您将数据从SSAS导入powerpivot,那么您实际上正在执行的是执行巨型交叉连接以将数据从SSAS迁移到Powerpivot表中.如果你试过这个,你会发现它会生成字段名称/标签,例如"Property DimensionCountyCounty Name"......哇真的吗?然后,您只需使用本地Powerpivot的OLAP引擎处理数据,因此依赖于具有64位操作系统的客户端计算机,以便使用合理大小的数据集.这是因为如果你是刚刚切割出SSAS,扔了你所有的努力构建一个复杂的OLAP数据库和所有的元数据,计算,汇总等一半使用SSAS的原因是,它可以汇总详细数据在它返回客户端之前,客户端不需要64位操作系统,并且客户端上不需要大量资源.我非常努力地使用反对SSAS的powerpivot可用,但在尝试了几种方法并且与用户来回之后,它真的没有接近可用的地方.不敲PowerPivot的,因为我看到它的用处在许多其他方案,但如果你的SSAS多维数据集是系统的重要组成部分(即计算,聚集了大量的服务器端,记录等),则PowerPivot的似乎是错误的选项.
这是我的查询示例:
SELECT
NON EMPTY CrossJoin(
{[Department Dimension].[Name].[Name]},
{[Finance Month].[Report Year].[Report Year]}
)
ON COLUMNS ,
CrossJoin(
{[Department Finance Line Type Dimension].[Display Order].[Display Order] },
{[Department Finance Line Type Dimension].[Line Number].[Line Number]},
{[Department Finance Line Type Dimension].[Display Name].[Display Name]}
)
ON ROWS
FROM
(
SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [HYP Data View]
)
WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 …
Run Code Online (Sandbox Code Playgroud) 下面是我的 SQL 查询:
从orders left 中选择不同的ports.port_name 加入port_master on orders.officeId = ports.portId;
如何使用 typeorm 查询运行器编写以上 SQL 以选择不同的端口名称?以下语法获取所有端口
await queryRunner.manager.find(Orders, {relations: ["ports"], where: filter }).then((result: any) => { orders = result; });
我正在使用 MS SQL 服务器创建一个 Spring Boot 应用程序。我有一个要求,我需要使用放置在 /src/main/resources/ 文件夹中的 data.sql 文件初始化 user_database 数据库中的 USERS 表,其余的表应该在 @Table 注释的帮助下在 springboot_db 数据库中自动创建。下面是代码片段。
applicaiton.properties 文件
spring.datasource.platform=mssql
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springboot_db
spring.datasource.username=sa
spring.datasource.password=einfochips@123
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialize=true
Run Code Online (Sandbox Code Playgroud)
数据.sql
USE master
IF EXISTS(select name from sys.databases where name='user_database')
DROP DATABASE user_database;
CREATE DATABASE user_database;
USE user_database;
CREATE TABLE tbl_users (
id INTEGER NOT NULL IDENTITY(1,1),
name VARCHAR(25),
email VARCHAR(50),
username VARCHAR(25),
password VARCHAR(225),
gender VARCHAR(1),
contact_number VARCHAR(12),
address VARCHAR(150),
country VARCHAR(20),
newsletter BIT,
framework VARCHAR(500),
skill VARCHAR(500),
role_id INTEGER, …
Run Code Online (Sandbox Code Playgroud) 我在 spring boot rest 应用程序中使用 spring security。获取请求工作正常,但 POST/PUT/DELETE 请求给出“403 Forbidden”。下面是我的代码片段。UI 是 Angular 6
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Override
protected void configure(HttpSecurity http) throws Exception {
CustomAuthorizationFilter customAuthorizationFilter = new CustomAuthorizationFilter(authenticationManager());
customAuthorizationFilter.setUserService(userService);
http.cors().and().authorizeRequests().anyRequest().authenticated().and().addFilter(customAuthorizationFilter);
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/v2/api-docs", "/configuration/ui", "/swagger-resources", "/configuration/security",
"/swagger-ui.html", "/webjars/**");
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")); …
Run Code Online (Sandbox Code Playgroud) spring ×3
spring-boot ×3
spring-mvc ×2
excel ×1
java ×1
mdx ×1
mysql ×1
node.js ×1
olap ×1
olap-cube ×1
olap4j ×1
sql-server ×1
ssas ×1
typeorm ×1