Добавить новую меру в ActivePivot?

Я пытаюсь добавить новую меру в существующий куб ActivePivot. Я начал добавлять меру в проект Sanbox. Работало нормально. Я смог увидеть новую меру, и я получил сумму всех элементов. Я добавил следующие строки:

EquityDerivativesCube.xml:
  <measure name="test" aggregationFunctions="SUM"/>

SandboxFields.xml:
    <field name="test" type="double" defaultValue="0" />

PNLCalculator#PNLCalculatorResult.java
  private Double    test;
  public Double getTest() {
    return test;
  }

  public void setTest(Double test) {
    this.test = test;
  }

PNLCalculator.enrichTrade()
  ...
  result.setTest(2.);
  ...

В Real-World-Application этот подход работает не так хорошо. Я добавил следующие строки:

В

RealWorldApplicationCube.xml
  <measure name="Test" aggregationFunctions="SUM" folder="Dev\Test" />

В

RealWorldApplicationSchema.xml
  <field name="Test"        type="double" defaultValue="0" />

Данные загружаются из файлов CSV. Существует файл CSV, который определяет все поля для каждого файла, которые может обрабатывать приложение.

...;Test=N/A;

Существует также калькулятор, который обрабатывает все остальные меры. Я расширил это так:

public void computeTest(IRelationalEntry entry) {
  double price = org.apache.commons.collections.MapUtils.getDouble(entry, "price", 0.);
  double test = price * 2;

  entry.put("Test", test);
}

Когда я запускаю приложение, я получаю пару исключений и не вижу новую меру. Вот исключение:

com.quartetfs.fwk.transaction.TransactionException: [Transaction manager: ActivePivot] Prepare commit operation failed because an exception has been raised.  You must now rollback the transaction.    at com.quartetfs.fwk.transaction.impl.ATransactionManager.prepareCommit(ATransactionManager.java:130)   at com.quartetfs.fwk.transaction.impl.ATransactionManager.commit(ATransactionManager.java:142)  at com.quartetfs.tech.store.impl.ARelationalTransactionManager.commit(ARelationalTransactionManager.java:139)   at com.quartetfs.tech.store.impl.ARelationalTransactionManager.commit(ARelationalTransactionManager.java:51)    at com.real.world.application.impl.ATransactionExceptionAwareHandler.doSubmit(ATransactionExceptionAwareHandler.java:97)    at com.real.world.application.impl.ATransactionExceptionAwareHandler.submit(ATransactionExceptionAwareHandler.java:51)  at com.quartetfs.tech.store.impl.TransactionHandlerListener.receive(TransactionHandlerListener.java:61)     at com.quartetfs.tech.store.csv.impl.FilteredSource.receive(FilteredSource.java:56)     at com.quartetfs.fwk.messaging.impl.ParserContext.publishChunk(ParserContext.java:457)  at com.quartetfs.fwk.messaging.impl.ParserContext.awaitTermination(ParserContext.java:382)  at com.quartetfs.fwk.messaging.impl.CSVSource.process(CSVSource.java:308)   at com.quartetfs.fwk.messaging.impl.CSVSource.onFileAction(CSVSource.java:282)  at com.quartetfs.fwk.messaging.impl.AFileWatcher.filesAction(AFileWatcher.java:277)     at com.quartetfs.fwk.messaging.impl.AFileWatcher.doInterval(AFileWatcher.java:267)  at com.quartetfs.fwk.messaging.impl.AFileWatcher.startScheduling(AFileWatcher.java:125)     at com.quartetfs.fwk.messaging.impl.AFileWatcher.start(AFileWatcher.java:107)   at com.quartetfs.fwk.messaging.impl.CSVSource.start(CSVSource.java:182)     at com.quartetfs.tech.store.csv.impl.ExtendedCSVDataModelFactory$1.run(ExtendedCSVDataModelFactory.java:217)    at java.lang.Thread.run(Thread.java:662) Caused by: com.quartetfs.fwk.transaction.TransactionException: [Transaction manager: RealWorldApplicationSchema] Prepare commit operation failed because an exception has been raised.  You must now rollback the transaction.     at com.quartetfs.fwk.transaction.impl.ATransactionManager.prepareCommit(ATransactionManager.java:130)   at com.quartetfs.tech.store.impl.ARelationalTransactionManager.doPrepareCommit(ARelationalTransactionManager.java:113)  at com.quartetfs.fwk.transaction.impl.ATransactionManager.prepareCommit(ATransactionManager.java:128)   ... 18 more Caused by: com.quartetfs.fwk.transaction.TransactionException: One of the schema transaction contribution tasks failed.     at com.quartetfs.biz.pivot.transaction.impl.ActivePivotSchemaTransaction.prepareCommit(ActivePivotSchemaTransaction.java:239)   at com.quartetfs.biz.pivot.impl.ActivePivotSchemaTransactionManager.doPrepareCommit(ActivePivotSchemaTransactionManager.java:194)   at com.quartetfs.fwk.transaction.impl.ATransactionManager.prepareCommit(ATransactionManager.java:128)   ... 20 more Caused by: java.lang.RuntimeException: com.quartetfs.biz.pivot.ClassificationException: The calculator has thrown an exception during the evaluation of the object: RelationalEntry [type=ActivePivot, key=Key [ ... ,Test=null, ...]]  at jsr166y.ForkJoinTask.completeExceptionally(ForkJoinTask.java:1116)   at jsr166y.cancellable.impl.CancellableCountedCompleter.onCompletion(CancellableCountedCompleter.java:132)  at jsr166y.CountedCompleter.tryComplete(CountedCompleter.java:391)  at com.quartetfs.biz.pivot.transaction.impl.ActivePivotSchemaTransaction$ContributeAction.afterCompute(ActivePivotSchemaTransaction.java:492)   at jsr166y.cancellable.impl.CancellableCountedCompleter.compute(CancellableCountedCompleter.java:96)    at jsr166y.CountedCompleter.exec(CountedCompleter.java:437)     at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:265)   at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:976)    at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1480)   at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:105) Caused by: com.quartetfs.biz.pivot.ClassificationException: The calculator has thrown an exception during the evaluation of the object: RelationalEntry [type=ActivePivot, key=Key [ ... ,Test=null, ...]]   at com.quartetfs.biz.pivot.classification.impl.Classifier.classifyAll(Classifier.java:114)  at com.quartetfs.biz.pivot.transaction.impl.ActivePivotSchemaTransaction$ContributeAction.compute(ActivePivotSchemaTransaction.java:446)    at com.quartetfs.biz.pivot.transaction.impl.ActivePivotSchemaTransaction$ContributeAction.computeSafely(ActivePivotSchemaTransaction.java:487)  at jsr166y.cancellable.impl.CancellableCountedCompleter.compute(CancellableCountedCompleter.java:91)    ... 5 more Caused by: com.quartetfs.biz.pivot.ClassificationException: Classification failure for level "Test": the mandatory property "Test" is not found. Contribution key: "Key [  ... ,Test=null, ...]].    at com.quartetfs.biz.pivot.classification.impl.ResultClassificationProcedure.execute(ResultClassificationProcedure.java:192)    at com.quartetfs.biz.pivot.classification.impl.ClassificationTree$ClassificationNode.execute(ClassificationTree.java:215)   at com.quartetfs.biz.pivot.classification.impl.ClassificationTree$ClassificationNode.execute(ClassificationTree.java:235)   at com.quartetfs.biz.pivot.classification.impl.ClassificationTree.execute(ClassificationTree.java:57)   at com.quartetfs.biz.pivot.classification.impl.Classifier.classify(Classifier.java:161)     at com.quartetfs.biz.pivot.classification.impl.Classifier.classifyAll(Classifier.java:110)  ... 8 more
06.02.2013 16:09:24 com.real.world.application.impl.ATransactionExceptionAwareHandler doSubmit

Что мне не хватает? Как я могу добавить новую меру в куб? Что вызывает ошибку в калькуляторе?

Во время отладки код посещает метод калькуляторов (computeTest()) и устанавливает значение RelationalEntry.

ура

1 ответ

Действия по добавлению новой меры в ActivePivot не сложнее, чем то, что вы описали в своем посте. Объявите поле, содержащее значение для агрегирования, укажите это поле как меру в вашем кубе вместе с функциями агрегации, которые вы хотите применить к нему. И, опционально, постпроцессоры, которые вы написали, если базовых функций агрегирования недостаточно.

Но что-то еще в вашем проекте, кажется, вызывает проблему, и вам нужна поддержка (данные, загрузка данных, другой компонент...). Stackru не предназначен для отслеживания проблем или поддержки устранения неполадок, это больше "я хотел бы сделать это, как я могу это сделать?". Мой совет - довести вашу проблему напрямую в службу поддержки Quartet FS ( http://support.quartetfs.com/).

Другие вопросы по тегам