# # Cumulative Field Sum # # This snapon is used to compute the sum of a cumulative field. For instance, Flash logs log the bandwidth-so-far-this-session for each event, so to compute the total bandwidth # for an event, it is necessary to subtract the bandwidth of the current event, from the bandwidth of the previous event in the session. This snapon can be used # to compute the actual bandwidth per event for Flash, or similar. # cumulative_field_sum = { label = "$lang_admin.snapons.cumulative_field_sum.label" comment = "$lang_admin.snapons.cumulative_field_sum.comment" config_snapon_category = "" parameters = { date_time_field = { parameter_value = "date_time" validation_type = "string" form_element_label = "$lang_admin.snapons.cumulative_field_sum.parameters.date_time_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # date_time_field cumulative_field = { parameter_value = "cs_bytes" validation_type = "string" form_element_label = "$lang_admin.snapons.cumulative_field_sum.parameters.cumulative_field.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # cumulative_field # This is the field which has a different value in the log data, for each session session_id_field = { parameter_value = "session_id" validation_type = "string" form_element_label = "$lang_admin.snapons.cumulative_field_sum.parameters.session_id.form_element_label" form_element_type = "select" select_options_source = "database_fields" description = "" } # session_id_field cumulative_field_sum_name = { parameter_value = "$lang_admin.snapons.cumulative_field_sum.parameters.cumulative_field_sum_name.parameter_value" final_node_name = "" validation_type = "field_label" validate_field_label_for = { database_fields = true report_fields = true } form_element_label = "$lang_admin.snapons.cumulative_field_sum.parameters.cumulative_field_sum_name.form_element_label" form_element_type = "text" form_element_width = "380" description = "" } # cumulative_field_sum_name } # parameters parameters_form = { group_1 = { description = "$lang_admin.snapons.cumulative_field_sum.parameters_form.group_1.description" parameters = { date_time_field = true cumulative_field = true session_id_field = true cumulative_field_sum_name = true } # parameters } # group 1 } # parameters_form attach_operations = { # When attaching: Add the cumulative field sum database field add_database_field = { type = "add_database_fields" fields = { "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" = { label = "{= @parameters{'cumulative_field_sum_name'}{'parameter_value'} =}" type = "int" derivation_method = "database_filter" aggregation_method = "sum" category = "" index = "true" suppress_top = "0" suppress_bottom = "2" integer_bits = "64" } # cumulative_field_sum_name } # fields } # add_database_field # When attaching: add the database filter to calculate the field add_database_filter = { type = "add_database_filters" filters = { "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" = { conditions = { # Sort chronologically sort = { type = "sort" fields = { date_time = { column_name = "{= @parameters{'date_time_field'}{'parameter_value'} =}" } # loadorder = { # column_name = "loadorder" # } } # fields } # sort # This node keeps the previous value of all sessions previous_value = { type = "variable" variable_name = "previous_value" variable_type = "node" initial_value = "" } # previous_value } # conditions # The follow expression is the code which implements the filter action expression = ` # Subtract the previous event in this session from the current event, to get the value of the cumulative field for this event {= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =} = {= @parameters{'cumulative_field'}{'parameter_value'} =} - @previous_value{{= @parameters{'session_id_field'}{'parameter_value'} =}}; # Remember that this is the value for this session @previous_value{{= @parameters{'session_id_field'}{'parameter_value'} =}} = {= @parameters{'cumulative_field'}{'parameter_value'} =}; ` } # cumulative_field_sum_name } # filters } # add_sessions_database_filter # When attaching: Add the report field add_report_field = { type = "add_report_fields" fields = { "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" = { label = "{= @parameters{'cumulative_field_sum_name'}{'parameter_value'} =}" column_label = "" column_info = "" database_field = "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" display_format_type = "bandwidth" show_remainder_value = true show_average_value = true show_min_value = true show_max_value = true show_total_value = true percent_calculation = "sum" } # cumulative_field_sum_name } # fields } # add_report_field # When attaching: Add the report field to all xref groups add_xref_field = { type = "add_xref_fields" xref_group = "*" fields = { "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" = "" } # fields } # add_xref_field # When attaching: Add the column to all report elements add_report_column = { type = "add_report_element_columns" report = "*" report_element = "*" columns = { "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" = { report_field = "{= @parameters{'cumulative_field_sum_name'}{'final_node_name'} =}" show_column = true show_percent_column = false show_bar_column = false show_graph = false } # cumulative_field_sum_name } # columns } # add_sessions_report_columns } # attach_operations } # cumulative_field_sum