Building up on the previous iccube tutorial, here are a few key extensions to reporting.
First how to extract data from a command line client written
Get data using CLI (or Java)
String url, user, password, file;
public static void main (String... args) throws Exception {
Connection connection = DriverManager.getConnection(url, user, password);
OlapConnection olapConnection = connection.unwrap(OlapConnection.class);
runMDX(file, olapConnection);
if (watch) {
try {
watch(file, olapConnection);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
olapConnection.close();
}
public static String mdxQueryfromFile(String file) throws IOException {
Path p = new File(file).toPath();
System.out.println(p.toAbsolutePath());
return Files.readString(p);
}
private static void runMDX(String file, OlapConnection olapConnection) throws OlapException, IOException {
CellSet cellSet = olapConnection.createStatement().executeOlapQuery(mdxQueryfromFile(file));
RectangularCellSetFormatter formatter = new RectangularCellSetFormatter(false);
PrintWriter writer = new PrintWriter(System.out);
formatter.format(cellSet, writer);
writer.flush();
}
Working with last N days/weeks etc…
WITH
SET LastWeek AS ClosingPeriod( [issueCompletion].[issueCompletion].[Day])
SET Last2Weeks AS {LastWeek.Item(0).Lag(13):LastWeek.Item(0)}
SELECT Last2Weeks ON 1, [Measures].[closedIssues] on 0
FROM [redmineProduction]
Create custom measures to compare with a previous period
create MEMBER [Measures].[OneYearAgo]
AS
(ParallelPeriod([Year],1),[Measures].[London Mean Roadside:Nitrogen Dioxide (ug/m3)])
create MEMBER [Measures].[DiffOneYearAgo]
AS
Iif( IsEmpty( [Measures].[OneYearAgo] ), 0, [Measures].[London Mean Roadside:Nitrogen Dioxide (ug/m3)] - [Measures].[OneYearAgo] )
create MEMBER [Measures].[6 Months Moving Avg] AS
AVG([Date].[Date].CurrentMember : [Date].[Date].CurrentMember.lag(6), [Measures].[London Mean Roadside:Nitrogen Dioxide (ug/m3)])
Export/Import server side + report
Find the schemas here …