Skip to content

Event Analytics Java 客户端

简介

Event Analytics Java 客户端允许您分析事件数据。该服务可以利用统计分析确定重要的相关项,并帮助更好地了解系统的内部流程。有关该服务的更多信息,请参见 Event Analytics

提示

以下示例中的占位符由尖括号 < > 表示。

事件操作

事件操作客户端对事件数据进行统计分析,以识别出最常发生的事件。

客户端名称:EventOperationsClient

查找最常发生的事件

本部分展示了找出 N 个最常发生的事件,并按发生次数降序排序返回最常发生的事件的两种选项。

// Construct the EventOperationsClient object
EventOperationsClient event_operations_client = EventOperationsClient.builder()
                                                  .mindsphereCredentials(<credentials>)
                                                  .restClientConfig(<config>)
                                                  .build();

// Create the EventsInputModelEventsMetadata object
EventsInputModelEventsMetadata events_metadata = new EventsInputModelEventsMetadata();
events_metadata.setEventTextPropertyName("text");

// Create a list of events to be analyzed
Event first_event = new Event();
first_event.setText("INTRODUCING FUEL");
first_event.setTextQc(0);
first_event.setTime("2017-10-01T12:00:00.001Z");

Event second_event = new Event();
second_event.setText("Status@Flame On");
second_event.setTextQc(0);
second_event.setTime("2017-10-01T12:02:01.001Z");

List<Event> events_list = new ArrayList<>();
events_list.add(first_event);
events_list.add(second_event);

// Create the TopEventsInputDataModel object that will be analyzed
TopEventsInputDataModel input_data_model = new TopEventsInputDataModel();
input_data_model.setNumberOfTopPositionsRequired(5);
input_data_model.setEventsMetadata(events_metadata);
input_data_model.setEvents(events_list);

TopEventOutput top_events_response = null;
try {
    top_events_response = event_operations_client.topEvents(input_data_model);
} catch (MindsphereException e) {
    // Exception handling
}

或者,使用 TopEventsRequest 模型。

// Create the EventOperationsClient object as shown above

TopEventsRequest request_object = new TopEventsRequest();
request_object.setData(<input_data>);

TopEventOutput top_events_response = null;
try {
    top_events_response = event_operations_client.topEvents(request_object);
} catch (MindsphereException e) {
    // Exception handling
}

过滤事件

本部分展示了通过应用用户定义的过滤器简化数据集的两种选项。

// Create the EventOperationsClient object as shown above

// Create the EventsInputModelEventsMetadata object
EventsInputModelEventsMetadata events_metadata = new EventsInputModelEventsMetadata();
events_metadata.setEventTextPropertyName("text");

// Create a list of events to be analyzed
Event first_event = new Event();
first_event.setText("INTRODUCING FUEL");
first_event.setTextQc(0);
first_event.setTime("2017-10-01T12:00:00.001Z");

Event second_event = new Event();
second_event.setText("Status@Flame On");
second_event.setTextQc(0);
second_event.setTime("2017-10-01T12:02:01.001Z");

List<Event> events_list = new ArrayList<>();
events_list.add(first_event);
events_list.add(second_event);

// Create a list of filter criteria
List<String> filter_list = new ArrayList<>();
filter_list.add("Introduction fuel");

// Create the EventSearchInputDataModel object that will be analyzed
EventSearchInputDataModel input_data_model = new EventSearchInputDataModel();
input_data_model.setEvents(events_list);
input_data_model.setEventsMetadata(events_metadata);
input_data_model.setFilterList(filter_list);

EventArrayOutput filter_events_response = null;
try {
    filter_events_response = event_operations_client.filterEvents(input_data_model);
} catch (MindsphereException e) {
    // Exception handling
}

或者,使用 FilterEventsRequest 模型。

// Create the EventSearchInputDataModel object as shown above
FilterEventsRequest request_object = new FilterEventsRequest();
request_object.setData(input_data_model);

EventArrayOutput filter_events_response = null;
try {
    filter_events_response = event_operations_client.filterEvents(request_object);
} catch (MindsphereException e) {
    // Exception handling
}

事件计数

本部分展示了根据用户定义的间隔长度确定每段时间间隔的事件数的两种选项。

// Create the EventOperationsClient object as shown above
// Create the EventInputEventsMetadata object
EventInputEventsMetadata events_metadata = new EventInputEventsMetadata();
events_metadata.setEventTextPropertyName("text");
events_metadata.setSplitInterval(500);

// Create a list of events to be analyzed
Event first_event = new Event();
first_event.setText("INTRODUCING FUEL");
first_event.setTextQc(0);
first_event.setTime("2017-10-01T12:00:00.001Z");

Event second_event = new Event();
second_event.setText("Status@Flame On");
second_event.setTextQc(0);
second_event.setTime("2017-10-01T12:02:01.001Z");

List<Event> events_list = new ArrayList<>();
events_list.add(first_event);
events_list.add(second_event);

// Create the EventInput object that will be analyzed
EventInput event_input = new EventInput();
event_input.setEvents(events_list);
event_input.setEventsMetadata(events_metadata);

EventCountOutput count_events_response = null;
try {
    count_events_response = event_operations_client.countEvents(event_input);
} catch (MindsphereException e) {
    // Exception handling
}

或者,使用 CountEventsRequest 模型。

// Create the EventInput object as shown above
CountEventsRequest request_object = new CountEventsRequest();
request_object.setData(event_input);

EventCountOutput count_events_response = null;
try {
    count_events_response = event_operations_client.countEvents(request_object);
} catch (MindsphereException e) {
    // Exception handling
}

删除重复事件

本部分展示了删除重复事件的两种选项。这些方法检测用户定义宽度(例如 5,000 毫秒)的滑动窗口中的重复事件,并通过聚合具有重复事件来减少数据集。

// Create the EventOperationsClient object as shown above
// Create the EventInputEventsMetadata object
EventInputEventsMetadata events_metadata = new EventInputEventsMetadata();
events_metadata.setEventTextPropertyName("text");
events_metadata.setSplitInterval(500);

// Create a list of events to be analyzed
Event first_event = new Event();
first_event.setText("INTRODUCING FUEL");
first_event.setTextQc(0);
first_event.setTime("2017-10-01T12:00:00.001Z");

Event second_event = new Event();
second_event.setText("Status@Flame On");
second_event.setTextQc(0);
second_event.setTime("2017-10-01T12:02:01.001Z");

List<Event> eventsList = new ArrayList<>();
eventsList.add(first_event);
eventsList.add(second_event);

// Create a list of filter criteria
List<String> filter_list = new ArrayList<>();
filter_list.add("Introduction fuel");

// Create the EventInput object that will be analyzed
EventInput event_input = new EventInput();
event_input.setEvents(eventsList);
event_input.setEventsMetadata(events_metadata);

DuplicateEventArrayOutput remove_duplicate_response = null;
try {
    remove_duplicate_response = event_operations_client.removeDuplicateEvents(event_input);
} catch (MindsphereException e) {
    // Exception handling
}

或者,使用 RemoveDuplicateEventsRequest 模型。

// Create the EventInput object as shown above
RemoveDuplicateEventsRequest request_object = new RemoveDuplicateEventsRequest();
request_object.setData(event_input);

DuplicateEventArrayOutput remove_duplicate_response = null;
try {
    remove_duplicate_response = event_operations_client.removeDuplicateEvents(request_object);
} catch (MindsphereException e) {
    // Exception handling
}

模式操作

模式操作客户端会对事件数据进行统计分析,以识别出现频率最高的事件。

客户端名称:PatternOperationsClient

查找事件模式

本部分展示了在事件列表中搜索用户定义的模式的两种选项。该响应列出指定模式匹配的所有事件。

// Construct the PatternOperationsClient object
PatternOperationsClient pattern_operations_client = PatternOperationsClient.builder()
                                                      .mindsphereCredentials(credentials)
                                                      .restClientConfig(config)
                                                      .build();

// Construct the EventsInputModelEventsMetadata object
EventsInputModelEventsMetadata events_metadata = new EventsInputModelEventsMetadata();
events_metadata.setEventTextPropertyName("text");

// Create a list of events to be analyzed
Event first_event = new Event();
first_event.setText("INTRODUCING FUEL");
first_event.setTextQc(0);
first_event.setTime("2017-10-01T12:00:00.001Z");

Event second_event = new Event();
second_event.setText("Status@Flame On");
second_event.setTextQc(0);
second_event.setTime("2017-10-01T12:02:01.001Z");

List<Event> events_list = new ArrayList<>();
events_list.add(first_event);
events_list.add(second_event);

// Construct the EventsInputModel object
EventsInputModel events_input = new EventsInputModel();
events_input.setEvents(events);
events_input.setEventsMetadata(events_metadata);

// Construct MatchingPattern object
MatchingPattern matching_pattern_1 = new MatchingPattern();
matching_pattern_1.setEventText("INTRODUCING FUEL");
matching_pattern_1.setMaxRepetitions(2);
matching_pattern_1.setMinRepetitions(1);

MatchingPattern matching_pattern_2 = new MatchingPattern();
matching_pattern_2.setEventText("Status@Flame On");
matching_pattern_2.setMaxRepetitions(1);
matching_pattern_2.setMinRepetitions(0);

// Create a list of matching patterns
List<MatchingPattern> pattern = new ArrayList<>();
pattern.add(matching_pattern_1);
pattern.add(matching_pattern_2);

// Construct PatternDefinition object
PatternDefinition pattern_definition = new PatternDefinition();
pattern_definition.setPattern(pattern);

// Create a list of pattern definitions
List<PatternDefinition> pattern_definition_list = new ArrayList<>();
pattern_definition_list.add(pattern_definition);

// Create a list of non event strings
List<String> non_events = new ArrayList<>();
non_events.add("Error 2.. occurred");
non_events.add("STOPPING ENGINE");

// Construct the PatternMatchingInputDataModel object that will be analyzed
PatternMatchingInputDataModel input_data_model = new PatternMatchingInputDataModel();
input_data_model.setEventsInput(events_input);
input_data_model.setNonEvents(non_events);
input_data_model.setPatternsList(pattern_definition_list);
input_data_model.setMaxPatternInterval(200000);

PatternMatchingOutput match_pattern_response = null;
try {
    match_pattern_response = pattern_operations_client.matchPatternsOverEvents(input_data_model);
} catch (MindsphereException e) {
    // Exception handling
}

或者,使用 MatchPatternsOverEventsRequest 模型。

// Construct the PatternMatchingInputDataModel object as shown above

MatchPatternsOverEventsRequest request_object = new MatchPatternsOverEventsRequest();
request_object.setData(input_data_model);

PatternMatchingOutput match_pattern_response = null;
try {
    match_pattern_response = pattern_operations_client.matchPatternsOverEvents(request_object);
} catch (MindsphereException e) {
    // Exception handling
}

Last update: March 22, 2023