Interface ModelFormulaContextReadWrite
- All Superinterfaces:
ModelFormulaContextReadOnly
- All Known Subinterfaces:
ModelCalculationFormulaContext,ModelParallelCalculationFormulaInitContext,ModelParallelCalculationFormulaSummaryContext
-
Method Summary
Modifier and TypeMethodDescriptionAdd a table in the model.booleandropAttachment(String name) Delete all versions of the attachment with the name.voiddropTable(DatamartContext.Table table) longloadTable(DatamartContext.Table table, DatamartContext.Query query, boolean truncate) Sample code:longloadTable(DatamartContext.Table table, DatamartContext.SqlQuery query, boolean truncate) Sample code:longloadTable(DatamartContext.Table table, PipelineStage query, boolean truncate) Sample code:voidstartJobTriggerCalculation(String imageName, String imageTag, String parameters, String jobName) It is the responsibility of the caller to serializeparametershowever they are required by the image.voidMethods inherited from interface ModelFormulaContextReadOnly
attachmentDownloadURL, currentStep, inputs, label, outputs, pmmlContext, rContext, table, tableNames, typedId, uniqueName
-
Method Details
-
addTable
Add a table in the model. If the table already exists, it is replaced by this new table.As with all Field Collections in Pricefx, labels must be unique.
A
Maprespecting the structure ofDMTable, including:label: the table labelfields: aListofMaprespecting the structure ofDMField, includingname,label,type,format,key,dimension
Sample code:
model.addTable("RevenueByProduct", [ label: "Revenue By Product", // the fields must respect DMField structure fields: [ [ name:"productId", label:"Product ID", type:"TEXT", key:true], [ name:"productGroup", label:"ProductGroup", type:"TEXT", dimension:true], [ name:"revenue", label:"Revenue", type:"MONEY"], ] ])- Parameters:
name- The table name to be created in this modeltableSpecs- The definition of the table to be created, see above.- Returns:
- The created model table
- Since:
- 8.0 - Godfather
-
loadTable
long loadTable(DatamartContext.Table table, DatamartContext.Query query, boolean truncate) throws InterruptedException Sample code:def ctx = api.getDatamartContext() def query = ctx.newQuery(ctx.getDataSource("txDS")) .select("sku", "P") .select("SUM(amount)", "R") def table = model.getTable('MyTable') def nbRowAdded = model.loadTable(table, query, false)- Parameters:
table- A table in this modelquery- The query to load into the tabletruncate- If the table should be truncated before loading- Returns:
- The number of row added
- Throws:
InterruptedException- Since:
- 8.0 - Godfather
- See Also:
-
loadTable
long loadTable(DatamartContext.Table table, DatamartContext.SqlQuery query, boolean truncate) throws InterruptedException Sample code:def ctx = api.getDatamartContext() def t1 = ctx.newQuery(ctx.getDataSource("txDS")) .select("sku", "P") .select("SUM(amount)", "R") def query = ctx.newSqlQuery() query.addSource(t1) query.setQuery('SELECT P, R::numeric as R FROM T1 ORDER BY P') def table = model.getTable('MyTable') def nbRowAdded = model.loadTable(table, query, false)- Parameters:
table- A table in this modelquery- The query to load into the tabletruncate- If the table should be truncated before loading- Returns:
- The number of row added
- Throws:
InterruptedException- Since:
- 8.0 - Godfather
- See Also:
-
loadTable
long loadTable(DatamartContext.Table table, PipelineStage query, boolean truncate) throws InterruptedException Sample code:def qapi = api.queryApi() def ds = qapi.tables().dataSource("txDS") def query = qapi .source(ds, [ds.sku, ds.amount]) .aggregateBy({ t -> [t.sku] }, { t -> [t.sku.as("P"), qapi.exprs().sum(t.amount).as("R")] }) .sortBy { t -> [qapi.orders().ascNullsLast(t.P)] } def table = model.getTable('MyTable') def nbRowAdded = model.loadTable(table, query, false)- Parameters:
table- A table in this modelquery- The query to load into the tabletruncate- If the table should be truncated before loading- Returns:
- The number of row added
- Throws:
InterruptedException- Since:
- 15.0 - Southside
- See Also:
-
truncateTable
- Parameters:
table- A table in the model- Since:
- 8.0 - Godfather
-
dropTable
- Parameters:
table- A table in the model- Since:
- 8.0 - Godfather
-
startJobTriggerCalculation
void startJobTriggerCalculation(String imageName, String imageTag, String parameters, String jobName) It is the responsibility of the caller to serializeparametershowever they are required by the image.parametersshould only contain a few values. Because of infrastructure limitations, it's max length is 131000 bytes. If you need to give a large amount of data, you should consider using model tables.jobNameshould be unique inside the step and model formula calculation that triggers them. Since Job Trigger Calculations are created from within an existing formula calculation, its full name will be constructed from the calculation name and the job name passed to this method:calculationName:jobName. This name can be used to access the Job Trigger Calculation results withModelFormulaContextReadOnly.outputs(String, String).Multiple job trigger calculation in a given formula calculation will run in parallel.
- Parameters:
imageName- A docker image name, without the tagimageTag- A tag for the docker image nameparameters- Some parameters understood by the image usedjobName- A name for the job, unique per current step and calculation- Since:
- 8.0 - Godfather
-
dropAttachment
Delete all versions of the attachment with the name.- Parameters:
name- name of the attachment(s) to delete- Returns:
trueif attachment(s) were deleted- Since:
- 15.0 - Southside
-
lookupTablesContext
ModelLookupTablesContextReadWrite lookupTablesContext()- Specified by:
lookupTablesContextin interfaceModelFormulaContextReadOnly- Returns:
- a context for read/write operations on the lookup tables of this model
- Since:
- 9.0 - Hurricane
-
filterTreesContext
ModelFilterTreesContextReadWrite filterTreesContext()- Specified by:
filterTreesContextin interfaceModelFormulaContextReadOnly- Returns:
- a context for read/write operations on the filter trees of this model
- Since:
- 9.0 - Hurricane
-
schedulesContext
ModelSchedulesContextReadWrite schedulesContext()- Specified by:
schedulesContextin interfaceModelFormulaContextReadOnly- Returns:
- a context for manipulating Model Schedules
- Since:
- 11.0 - Paper Plane
-