Beta 7
Pre-release-
Algorithms
-
Native access to R Language (32bit and 64bit) using opaR library
The new BI.Plugins.R.opaR unit contains the code that uses opaR library.
-
New VCL and FMX forms for "Console" interactive R calls.
These forms interact with R to call any R method or obtain R variables.
The console can be easily embedded in your projects:
uses BI.VCL.RConsole, BI.VCL.Grid; var R : TBIRConsole; R:= TBIRConsole.Create(Self); TVCLCommon.AddForm(R, MyPanel); // "MyPanel" can be any parent control TBIREngine.Engine.Output:= R.Memo.Lines;
- Instructions to setup TeeBI for machine-learning click here
-
-
Summary
-
New TSummaryTotals class to calculate summary subtotals and grand-totals.
uses BI.Summary.Totals; BIGrid1.Data:= TDataItem.Create( TSummaryTotals.Create( MySummary ));
-
New class function TSummaryItem.GuessType
Returns if a TDataItem can be used as a summary "Measure", "Group", or "Both".
This is useful to create summaries without knowing the kind of data (integers, text, etc)
uses BI.Summary; if TSummaryItem.GuessType( MyData[2] ) <> TSummaryItemType.GroupBy then MySummary.AddMeasure( MyData[2], TAggregate.Sum );
-
-
Queries
-
New TBISQL class function to convert a summary or query from / to SQL language.
// Note: Only a subset of SQL "select" clause is supported. uses BI.Data.SQL; Memo1.Text:= TBISQL.From( MySummary ); var MyData : TDataItem; MyData:= TBISQL.From( Data, Memo1.Text); // "Data" contains items referred in text
-
-
Importing Objects (ORM using RTTI)
The new BI.Data.RTTI unit contains a generic class to import any Record or TObject instance (or a TList of Array etc) into a TDataItem.
uses BI.Data.RTTI; var D : TDataItem; D:= TDataItem.Create( TTypeProvider<TCustomer>.Create( MyCustomers )); // "MyCustomers" can be an "array of TCustomer" etc
The TTypeProvider class has methods to Add, Find, Remove and Update items, so its basically mapping a TDataItem and its children Items with your custom record or class fields.
-
BIWeb server
-
Remote query execution
Adding the "sql=select * from customers" tag to the TBIWebClient URL request.
[Live Example](http://steema.cat:15015/?data=SQLite_demo&format=.htm&sql=select * from Customers)
-
Remote query by code
BIGrid1.Data:= TBIWebClient.Query('Steema','SQLite_Demo','select * from Customers where City="Madrid"');
-
-
Data Filtering
- New "IsNull" embedded function to use it in filters to skip or not "missing" null data.
var Query : TDataSelect; begin Query:=TDataSelect.Create; Query.Add(Demo['Orders']); Query.Filter:=TDataFilter.FromString(Demo,'(not IsNull(Orders.Date)) and (Customers.Name="intel")'); result:=TDataItem.Create(Query); // <-- Set Query as Provider for result end;
-
Data Provider
- A new class TDataProvider enables automatic nested TDataItem data loading.
For example, a TDataItem might be filled with data that is the output result of a query, which in turn is using other TDataItem datas that might have also a Provider (recursively).
This mechanism has been added to queries, summaries and other classes that are now capable of doing "select ... from select ..." nested queries. Other classes also have been refactored to be "Providers" of data, like the class that handles remote Web requests of TDataItem data streams.
With this new change, its no longer necessary to "calculate" queries or summaries. Simply construct a TDataItem passing a Provider parameter, and the summary or query will be automatically calculated "just-in-time" when its necessary:
BIGrid1.Data:= TDataItem.Create( MyQuery );
-
Lazarus and FreePascal
-
Fixes and improvements to support TeeBI with Lazarus and FreePascal
TeeBI can be used in Lazarus 1.7 (FreePascal 3.0) under Windows and Linux.
The BI.FPC unit contains several helper methods internally used to avoid adding "$IFDEF" in other units.
Note: Lazarus TDataset field does not support nested "ADT" dataset fields.
-
Support for importing database data with Lazarus
The new BI.Data.SqlDB unit plugs with Lazarus SqlDB engine and all of its supported database formats.
(Firebird, Interbase, Oracle, Postgres, ODBC, SQLite, Microsoft SQL Server and MySQL)
-
-
New in BI.Arrays unit
- New helper method "Append" for all TxxxArray classes to append another array into it.
-
Data Comparison
- The TDataCompare class has been improved alot. It can be used to test if two TDataItem instances are equal or not (in both structure and data), and optionally obtain the differences in an output TDataItem.
uses BI.Compare; var Diff : TDataItem; if not TDataCompare.Same( MyData1, MyData2, Diff) then BIGrid1.Data:= Diff;
-
CSV format
-
Improvements in CSV data import.
Several new features in TBICSV class enable importing huge amounts of data at fast speed (1 billion cells in 120 seconds).
For detailed CSV data import usage, please follow this link
-
-
Other changes and fixes
-
Fixes for XE4 Firemonkey forms
-
BIWeb server project support for XE4, using SQLExpress instead of FireDAC
-
TDataArray new IndexOf method:
var D : TDataArray; D:=[ MyData1, MyData2, ...]; if D.IndexOf('Hello') <> -1 then ...
-
TSortItem new Active (boolean) property, to enable / disable sort order items
-
New BI.Data.Xml.OXml unit to support importing Xml data with Oxml. (Also available Delphi Xml and OmniXml )
-
New OnProgress event in base TBISource class
Optional OnProgress event is called while data is being imported, enabling cancelling the import.
-
Executables TeeBIRecompile and BIWeb now codesigned using SHA256 secure hash.
-