Tuesday, April 16, 2019

OAC Essbase Google Sheets add-on

We're happy to announce the availability of our "OAC Essbase by Casabase" Google Sheets add-on. Our add-on has been tested and approved by Google for inclusion in the G Suite Marketplace. You can find more information, including the installation link here.

The "OAC Essbase by Casabase" Google Sheets add-on now allows you to combine the cloud advantages of Sheets (no local install, accessible from any connected device, built-in sharing) with the benefits of Oracle Analytics Cloud. You can now access your OAC data from Google Sheets exactly like you do in Excel using Smart View. All the familiar functions are there: 

·        Free-form: type in member names/alias directly in the sheet
·        Member Selection
·        Pivot
·        Unpivot
·        Drill-down
·        Drill-up
·        Keep Only
·        Remove Only
·        Submit Data
·        Execute MDX queries

The ability to pull your OAC data into Google Sheets in real-time opens up a new world of possibilities. Accessing your data in the Oracle Analytics Cloud using a cloud-based spreadsheet is the logical progression in the trend from on-premises applications. It’s easy to get started and we offer a 5-day free trial. If you have an OAC instance and credentials, you can get started in just a few minutes.
The add-on can also be installed from the G Suite Marketplace here.

Here's a blog post with more details.

Please give it a try and let us know if you have any questions.

Monday, November 12, 2018

Tableau and Essbase – A Match Made Perfect By ExoInsight

There is one area that Tableau and almost all other visualization tools have struggled to seamlessly adopt: OLAP data. Data stored in OLAP cubes such as Oracle Essbase is often difficult to work with in a reporting tool built primarily to handle relational data. OLAP data sources are almost always proprietary and built for speedy access from a native interface. Enabling OLAP data in a reporting tool such as Tableau is like putting a square peg in a round hole.

ExoInsight eliminates this challenge by presenting your Essbase data and metadata in a relational format, instantly and on-the-fly, unlocking it for downstream reporting tools such as Tableau. The challenges with Tableau’s built-in Oracle Essbase connector are well documented, not because the connector doesn’t do the job advertised, but because of the inherent discrepancies between OLAP and relational data. Tableau’s internal engine prefers data in row-and-column format, and this concept simply doesn’t apply to OLAP sources such as Oracle Essbase.
Enter ExoInsight. Instead of struggling to get your Oracle Essbase data in a format that Tableau prefers, ExoInsight does all this heavy lifting for you, formatting your Essbase data in such a way that makes it easy to work with.
Full article here.

Saturday, November 3, 2018

What is Casabase and why should I use it?

Casabase is a multidimensional engine that aggregates data instantly across multiple, sign-based hierarchies. You can view your data by any combination and at any level of Year, Month, Day, Product, Department, Entity, Location, Account, Scenario, Version, or any other dimension you want. And you don’t have to wait for a nightly or hourly process to do it – gone are worries that your upper-level data has not been processed and is out of sync with base-level data.


Casabase Dimensions - Off-the-shelf functionality

Casabase is OLAP made simple. Read more here: What is Casabase?


Sunday, June 24, 2018

Power BI and Essbase

The popularity of Power BI has skyrocketed in the past couple of years. Many companies are now mandating PBI as their corporate data analytics standard. It’s ability to connect to any data source (web service, relational database, analytics platform, flat file, even Excel files) has made it easy for companies to pull all their data into one place for analysis. However, Essbase users have been left out, until now.
At Casabase Software, we are now offering the ability to report directly on live Essbase data from Power BI. The key word here is “live”. As Essbase developers, we all know the different ways to get data out of Hyperion: calc scripts using dataexport, report scripts, mdx queries, exports, etc. The problem with automated processes using these methods though is that users often end up seeing stale data – i.e. the data in the cube has changed since the latest export. Even the slightest possibility of this occurring is unacceptable in today’s world of instantly available updates.
In order to make retrieving data accessible for even novice users, we’ve made it possible to do so without any knowledge of MDX. You can still use MDX if you’re comfortable doing so, and it also allows for more powerful reporting, but you’re no longer stuck if you don’t know the intricacies of crossjoin.
Please contact us if you’re interested in learning more.

Saturday, March 17, 2018

Casabase is ready


We’re happy to announce the official production release of Casabase!

Casabase Personal Edition (PE) is a powerful aggregation and analysis tool that runs directly in Excel on your desktop machine or laptop, requiring no server component whatsoever. This doesn’t mean that your data is siloed off though! You can export databases to a file and share them (either on a shared drive or any other file-sharing method) with other Casabase users, who can easily import them. The database itself can have refreshable data sources that point to other SQL databases, or even files, ensuring that the database always contains the latest data even after being shared.

Because there’s zero infrastructure outside of Excel (we recommend Excel 2016), getting started is ridiculously simple. And to make it even easier to see the potential of Casabase, we’ve included a sample database as part of the install.  CASAsamp is already setup and configured. Based on the Microsoft Contoso dataset, it allows you to try out Casabase’s free-form retrieval, as well as get acquainted with Casascripts. In fact, the Casascripts included with the application were actually used to build CASAsamp itself.

There’s a free, fully-functional 14-day trial, so please download Casabase and let us know what you think.

Monday, January 15, 2018

Casabase: A Closer Look



We just put up some short videos demonstrating Casabase functionality. If you've been wondering what Casabase looks like in action, please go take a look here.

We've been converting some Essbase cubes to Casabase recently. These are cubes that are not a good fit for Essbase: either they have way too many calculations or the granularity of the metadata is too fine. For example, one of the cubes has a member for each employee in a huge company - and since you can't delete a member (without losing data) when an employee leaves, there are tens of thousands of members in this one dimension alone.

These types of databases, however, are an excellent fit for Casabase. All retrievals are faster than in Essbase, but some are in the jaw-dropping range of 20x improvement. Loading metadata and data is also much easier, as there is no down-time for either operation in Casabase. Not to mention that aggregations are dynamic, so there's no more waiting around for calculations to complete before you can view the data. And there's never a question as to why the sum of the child members doesn't match the value in the parent. Priceless!

Thursday, December 21, 2017

Casabase: a new and improved Essbase

Having worked with Essbase for the past 10 years, I know all of its good and bad points. The Excel add-in is by far its best feature. The ability to perform free-form retrievals provides an unparalleled data analysis experience. Those coming from an Excel background know that pivot tables are extremely powerful, but limit the way you can interact with your data. Once you've used free-form retrievals you can never go back!

This feature alone has kept many organizations on Essbase, even though it has long begun to show its age. Even the forced switch to Smart View from the classic add-in was tolerated because there wasn't a viable alternative.

That's about to change!

I've been working on a new project for the past 6 months with Carr Harriman. Between the two of us we have over 20 years of professional experience implementing every kind of Essbase solution you can imagine. We've seen it all.

And the main thing we've noticed, like everyone else, is the lack of attention Oracle has paid to Essbase. The pace of innovation slowed from BSO to the introduction of ASO, which was obviously halfheartedly implemented. Hybrid BSO was more of the same half-baked, not-production-ready "innovation".

None of these technologies could propel Essbase into the 21st century though. Conceived 25 years ago, when computing resources were a fraction of those available today, its underlying technology just doesn't make sense anymore.

So Carr and I decided to embark on an audacious mission: to create a modern aggregation engine with the same type of free-form Excel retrieval that has become second nature to any Essbase user. Thus, Casabase was born.

We've actually exceeded our lofty goal! All aggregations are dynamic and instantaneous. The Casabase Excel add-in actually works better, and is more user-friendly, than the classic Essbase Excel add-in.

And the kicker - the engine driving all of this is SQL Server. That's right, a relational database! Say goodbye to the black box of Essbase. No more .ind or .pag files that you can't open and get to your data. Your data is now in relational tables. You can use any tool that can access SQL Server to quickly and easily retrieve or export your data.

And we didn't stop there either. We added integrated metadata management and mapping capabilities. You can share dimensions across databases and easily perform any kind of ETL on incoming data.

All of the administration is also done from Excel. The same Excel add-in used to perform retrievals is used to administer the application. Adding members, data sources, maps, users, exports; it's all done from Excel.

You can get more information on our philosophy with Casabase in the introductory blog post.

We already have beta testers lined up to begin testing next week. We are extremely excited about getting a production release ready in Q1 of next year.

Saturday, September 3, 2016

Power Query: how to connect to Essbase and pull data

UPDATE5: ExoInsight 7.0.0 now makes working with Tableau much easier than before. You can access ExoInsight from inside Tableau!

UPDATE4: ExoInsight also makes working with OLAP data (now both Essbase and Analysis Services) easier in Tableau. Instead of struggling to get your Oracle Essbase data in a format that Tableau prefers, ExoInsight does all this heavy lifting for you. ExoInsight eliminates this challenge by presenting your Essbase data and metadata in a relational format, instantly and on-the-fly, unlocking it for downstream reporting tools such as Tableau. The challenges with Tableau’s built-in Oracle Essbase connector are well documented, not because the connector doesn’t do the job advertised, but because of the inherent discrepancies between OLAP and relational data. Tableau’s internal engine prefers data in row-and-column format, and this concept simply doesn’t apply to OLAP sources such as Oracle Essbase.

Enter ExoInsight. Instead of struggling to get your Oracle Essbase data in a format that Tableau prefers, ExoInsight does all this heavy lifting for you, formatting your Essbase data in such a way that makes it easy to work with.

UPDATE3: ExoInsight enables Power BI Direct Query capability to Essbase. But its data staging ability makes ExoInsight much more useful than as just a PBI connector. ExoInsight allows you to pull Essbase data at any level, including calculated members, into a SQL Server relational, flat format that's perfect for use in downstream processes. Easily schedule SQL Server jobs to have your Essbase data refreshed in ExoInsight. You can also stage Essbase data that doesn't change (last year's budget, for example) in ExoInsight rather than have to make yet another roundtrip to Essbase from Power BI.

UPDATE2: Now you don't even have to know MDX to use the Power BI connector for Essbase. This makes it much more accessible for people who don't know Essbase, but still need to pull live data directly from it, without ETL/data marts/data warehouses and the accompanying lag times.

UPDATE: We've now created a fully-supported Power BI connector for Essbase. It's significantly improved from the raw Power Query Excel workbook below.


As promised in my last post, I'm going to detail the process of connecting Power Query to Essbase and extracting data. Please keep in mind that I'm a Power Query neophyte. I'm sure there are better ways to accomplish some of the steps outlined below. Please post a comment with any advice/improvements, so we can all benefit.

First, let me start by saying that there is no magic involved. It's just rare that anyone on the Essbase side uses the requisite connection method - XMLA. This is likely because Essbase does a terrible job of implementing the XMLA protocol. It only does so partially, and even deviates from the standard in the parts it ostensibly supports. This is the reason why third-party tools are almost always unable to connect to Essbase - and after working with it for over a decade I think this is by design. Anyone coming from the full-featured, beautifully-implemented XMLA on the Microsoft Analysis Services side would naturally be completely stymied. For those used to Essbase, imagine using XMLA to create/modify cubes, measures, members, etc. This has been possible in MSAS since day one. Ok, enough of my Essbase XMLA ranting - for now anyway. On with the show...

The first piece of information you need is the XMLA url for your Essbase server. On my test server (running in VirtualBox) it looks like so: http://192.168.56.101:9000/aps/XMLA. You'll need to replace the 192.168.56.101 with the server's IP address or DNS name where Hyperion Provider Services is installed (this is usually not the same as the Essbase server). The port is 9000, which is standard for compact (i.e. development) installs, but is usually 13080 or 19000 in production installs. You may need to contact your Essbase administrator if none of the above gives you similar output (your version number could obviously be different) when entered in a web browser:



Power Query supports Web queries, which, of course, is what XMLA is (being SOAP). The key, therefore, is knowing the correct SOAP envelope attributes, as well as the Security node's wsse syntax to pass to the Essbase XMLA service. I've highlighted below the items most likely to cause an issue when trying to connect:
Xml.Tables(Web.Contents("http://192.168.56.101:9000/aps/XMLA",
  [
   Headers = [#"Content-Type"="text/xml; charset=utf-8"],
   Content=Text.ToBinary("
    <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
 xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
 <SOAP-ENV:Header>
   <Security xmlns='wsse'>
     <UsernameToken>
       <Username>admin</Username>
       <Password>password123</Password>
     </UsernameToken>
   </Security>
 </SOAP-ENV:Header>
 <SOAP-ENV:Body>
 <Execute>
 <Command>
   <Statement>
    SELECT NON EMPTY { crossjoin([Year].members, {[Actual]}) } ON COLUMNS, 
      NON EMPTY {crossjoin(Descendants([Profit]), crossjoin(Descendants([South]), [Product].members)) } ON ROWS 
    FROM Sample.Basic WHERE ([Can])
   </Statement>
 </Command>
 <Properties>
   <PropertyList>
     <DataSourceInfo>Essbase;Data Source=epm</DataSourceInfo>
     <Content>SchemaData</Content>
     <Catalog>Sample</Catalog>
     <Format>Multidimensional</Format>
     <AxisFormat>TupleFormat</AxisFormat>
     <Content>SchemaData</Content>
     <Timeout>30000</Timeout>
   </PropertyList>
 </Properties>
 </Execute>
 </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>
  ")
 ]
)),

NOTES: The "Data Source" in the above <DataSourceInfo> element is the name of the Essbase server. The "Catalog" is the Essbase application, which must be the same as the one referenced in the MDX query in the <Statement> element.

Power Query provides excellent XML parsing capabilities. I've always had to use other languages (Java, Scala, JavaScript even) to parse XMLA's SOAP responses, but PQ handles it right out of the box. Navigating an XMLA response is as easy as pointing and clicking: 


XMLA returns data and metadata separately. In the above you can see Axes (metadata) and CellData. The hard part is marrying up the two of them. Specifically, CellData is returned like so:


Each data point has a CellOrdinal, which is not a row or column number. With all things XMLA, I always use the Microsoft documentation, which is orders of magnitude better, and more complete, than Oracle's. Here is the CellOrdinal explanation: "The axis reference for a cell can be calculated based on a CellOrdinal attribute value. Conceptually, cells are numbered in a dataset as if the dataset were a p-dimensional array, where p is the number of axes. Cells are addressed in row-major order." Yep, even that is better than Oracle's explanation, because there is no Essbase documentation at all of CellOrdinals.

The M code is pretty self-explanatory, so I'll let it do the talking below. The part dealing with CellOrdinals starts with the SetColumnNumberstep and goes up to, but doesn't include, MergeAxis0.

let
Source = Xml.Tables(Web.Contents(fnGetParameter("Provider Services URL"),
   [
   Headers = [#"Content-Type"="text/xml; charset=utf-8"],
   Content=Text.ToBinary("
    <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
 xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
 xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
 <SOAP-ENV:Header>
   <Security xmlns='wsse'>
     <UsernameToken>
       <Username>" & fnGetParameter("Username") & "</Username>
       <Password>" & fnGetParameter("Password") & "</Password>
     </UsernameToken>
   </Security>
 </SOAP-ENV:Header>
 <SOAP-ENV:Body>
 <Execute>
 <Command>
   <Statement>
     " & fnGetParameter("MDX Query") & "
   </Statement>
 </Command>
 <Properties>
   <PropertyList>
     <DataSourceInfo>Essbase;Data Source=" & fnGetParameter("Essbase Server") & "</DataSourceInfo>
     <Content>SchemaData</Content>
     <Catalog>" & fnGetParameter("Essbase Application") & "</Catalog>
     <Format>Multidimensional</Format>
     <AxisFormat>TupleFormat</AxisFormat>
     <Content>SchemaData</Content>
     <Timeout>30000</Timeout>
   </PropertyList>
 </Properties>
 </Execute>
 </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>
  ")
 ]
)),
Body = Source{0}[Table],
xmlAnalysis = Body{0}[Table],
ExecuteResponse = xmlAnalysis{0}[Table],
return = ExecuteResponse{0}[Table],
mddataset = return{0}[Table],
root = mddataset{0}[Table],
Axes = root{2}[Table],
Axis = Axes{0}[Table],
AxisTextType = Table.TransformColumnTypes(Axis,{{"Attribute:name", type text}}),
ExpandTuples = Table.ExpandTableColumn(AxisTextType, "Tuples", {"Tuple"}, {"Tuples.Tuple"}),
AxisOrdinalMap = Table.ExpandTableColumn(ExpandTuples, "Tuples.Tuple", {"Member", "Attribute:Ordinal"}, {"Tuples.Tuple.Member", "Tuples.Tuple.Attribute:Ordinal"}),
AddDimensionMembers = Table.AddColumn(AxisOrdinalMap, "DimensionMembers", each Text.Combine([Tuples.Tuple.Member][UName], ",")),
AxesTable = Table.AddColumn(AddDimensionMembers, "DimensionAliases", each Text.Combine([Tuples.Tuple.Member][Caption], ",")),
Axis0 = Table.SelectRows(AxesTable, each ([#"Attribute:name"] = "Axis0")),
Axis1Text = Table.SelectRows(AxesTable, each [#"Attribute:name"] <> "Axis0" and [#"Attribute:name"] <> "SlicerAxis"),
Axis1 = Table.TransformColumnTypes(Axis1Text,{{"Tuples.Tuple.Attribute:Ordinal", type number}}),
SlicerAxisText = Table.SelectRows(AxesTable, each ([#"Attribute:name"] = "SlicerAxis")),
SlicerAxis = Table.TransformColumnTypes(SlicerAxisText,{{"Tuples.Tuple.Attribute:Ordinal", type number}}),
CellData = root{3}[Table],
Cells = Table.ExpandTableColumn(CellData, "Table", {"Value", "FmtValue", "Attribute:CellOrdinal"}, {"Table.Value", "Table.FmtValue", "Table.Attribute:CellOrdinal"}),
#"Changed Type" = Table.TransformColumnTypes(Cells,{{"Table.Attribute:CellOrdinal", type number}}),
SetColumnNumber = Table.AddColumn(#"Changed Type", "Axis0", each Number.Mod([#"Table.Attribute:CellOrdinal"], Table.RowCount(Axis0))),
GroupedRows = Table.Group(SetColumnNumber, {"Axis0"}, {{"ColumnNum", each _, type table}}),
AddedClusteredIndex = Table.TransformColumns(GroupedRows, {"ColumnNum", each Table.AddIndexColumn(_,"ClusteredIndex",0,1)}),
ExpandClusteredColumn = Table.ExpandTableColumn(AddedClusteredIndex, "ColumnNum", {"Table.Value", "Table.Attribute:CellOrdinal", "ClusteredIndex"}, {"ColumnNum.Table.Value", "ColumnNum.Table.Attribute:CellOrdinal", "ColumnNum.ClusteredIndex"}),
#"Sorted Rows" = Table.Sort(ExpandClusteredColumn,{{"ColumnNum.Table.Attribute:CellOrdinal", Order.Ascending}}),
#"Removed Columns1" = Table.RemoveColumns(#"Sorted Rows",{"ColumnNum.Table.Attribute:CellOrdinal"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns1",{{"Axis0", type text}}),
MergeAxis0 = Table.NestedJoin(#"Changed Type2",{"Axis0"}, Axis0, {"Tuples.Tuple.Attribute:Ordinal"},"Columns",JoinKind.LeftOuter),
ExpandColumns = Table.ExpandTableColumn(MergeAxis0, "Columns", {"DimensionMembers", "DimensionAliases"}, {"Columns.DimensionMembers", "Columns.DimensionAliases"}),
MergeAxis1 = Table.NestedJoin(ExpandColumns,{"ColumnNum.ClusteredIndex"}, Axis1,{"Tuples.Tuple.Attribute:Ordinal"},"Rows",JoinKind.LeftOuter),
ExpandRows = Table.ExpandTableColumn(MergeAxis1, "Rows", {"DimensionMembers", "DimensionAliases"}, {"Rows.DimensionMembers.1", "Rows.DimensionAliases.1"}),
AddSlicerMemberNames = Table.AddColumn(ExpandRows, "SlicerMemberNames", each SlicerAxis[DimensionMembers]),
ExpandSlicerMemberNames = Table.ExpandListColumn(AddSlicerMemberNames, "SlicerMemberNames"),
AddSlicerMemberAliases = Table.AddColumn(ExpandSlicerMemberNames, "SlicerMemberAliases", each SlicerAxis[DimensionAliases]),
ExpandSlicerMemberAliases = Table.ExpandListColumn(AddSlicerMemberAliases, "SlicerMemberAliases"),
result = Table.RemoveColumns(ExpandSlicerMemberAliases,{"Axis0", "ColumnNum.ClusteredIndex"})
in
    result

The code can handle any combination of dimensions in the ROWS, COLUMNS, or SLICER axes. I haven't tested it with PAGE or CHAPTER, however. Also, it will return the "Default" alias, since XMLA returns this by default - whether you specify it in an axis or not. But if you use dimension properties to pull in other alias tables or dimension information (like LEVEL_NUMBER or GEN_NUMBER), you will need to modify the AxesTable step from [Caption] to the property name. 

The fnGetParameter query referenced above was taken verbatim from Ken Puls awesome Excelguru blog. It allows you to store variables and their values in an Excel sheet, then reference them from Power Query.

The code above generates the following output to Excel:



Finally, I've included a workbook containing all of the above that you can download here. Please let me know if you have suggestions for how to make the code better. I am astounded by how easy Power Query has made working with XMLA. At any step in the process above you can easily see what Power Query is doing. I will definitely be using PQ as my go-to Extract and Transform (of ETL) in the future.

Saturday, August 27, 2016

My first foray into Power Query

UPDATE: We've now created a fully-supported Power BI connector for Essbase. It's significantly improved from the raw Power Query Excel workbook below.

I'm not a big fan of FDMEE (that's putting it mildly), so when I recently had a requirement to pull data from one Essbase cube and map the data for loading to another Essbase cube, I started looking elsewhere. Since I happen to be using Excel 2016, it was a logical place to start.

It turns out that Microsoft has incorporated Power Query directly into this version of Excel, whereas before it was an add-in that you had to download and install separately, similar to Smart View. Except, since it's an add-in directly from Microsoft it works a thousand times better than Oracle's. This is understandable, considering Microsoft wrote Excel and can modify the code as needed to make its own add-ins work correctly.

Anyway, Power Query functionality can now be found under the Data tab in Excel 2016. Below you can see some of the data sources from which Power Query can pull. Besides the "other sources" shown below, it can pull from any relational database (and Microsoft's OLAP Analysis Services, too, of course). You will not, however, see Essbase as an explicit data source. In fact, people have been requesting that Microsoft add Essbase for almost 2 years now.


This didn't seem very encouraging at first. But hey, I built a rudimentary Google Sheets Essbase add-on, as well as a stand-alone, web-based Essbase grid system (cubeSavvy). How hard could it be to get Power Query talking to Essbase?

Well, it turned out to be pretty easy. So easy, in fact, that I am now a huge fan of Power Query. If Power Pivot is as awesome at BI as Power Query is at ETL, I will definitely be checking it out soon!

Power Query does have limitations, but it is orders of magnitude faster than FDMEE within them. For example, just mapping the 250,000 rows from one cube (not including extracting them) took FDMEE over 15 minutes. Power Query extracted the same data from Essbase and mapped it in a little over a minute!

I'm not sure how much FDMEE costs, but it's probably in the hundred of thousands of dollars like most Oracle products. Do you know how much Power Query costs? Zero dollars!!! It's built directly into Excel, so you get it for a couple of hundred bucks - along with Power Point, Word, Access, Outlook, and the other Office products.

I'm going to write a separate post with the detailed instructions for how to pull Essbase data into Power Query, since I anticipate a lot of people who aren't interested in FDMEE will want to reference it. The sharp-eyed among you will have noticed, however, that the screenshot above contains data from Sample.Basic returned from an Essbase query.

Thursday, August 18, 2016

Russian installer

Почти половина посетителей этой страницы приходится на Россию. Получается конечно, что они уже умеют читать по-английски. Но кому не удобнее на своем родном языке?

Я давно начал переводить cubeSavvy на русский, но далеко не весь текст был переведён. Однако в этой последней версии (6.0.1) дела куда лучше обстоят с переводом. Практически всё на русском, так в самом cubeSavvy, как в инсталляционной программе.

Последную версию, как всегда, можно загрузить здесь.

И так, быстро пройдёмся по всем окнам инсталляционной программы. Начнём с самого начала - выбор языка:



Если выбрать Russian:




Настоятельно рекомендую выбрать каталог, в котором нет пробелов, а то программа может не запуститься: