## GdaDataPivot GdaDataPivot — A data model for data summarisation |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              GdaDataPivot;
    struct              GdaDataPivotClass;
                        GdaDataPivotPrivate;
    enum                GdaDataPivotError;
    GdaDataModel *      gda_data_pivot_new                  (GdaDataModel *model);
    enum                GdaDataPivotFieldType;
    gboolean            gda_data_pivot_add_field            (GdaDataPivot *pivot,
                                                             GdaDataPivotFieldType field_type,
                                                             const gchar *field,
                                                             const gchar *alias,
                                                             GError **error);
    enum                GdaDataPivotAggregate;
    gboolean            gda_data_pivot_add_data             (GdaDataPivot *pivot,
                                                             GdaDataPivotAggregate aggregate_type,
                                                             const gchar *field,
                                                             const gchar *alias,
                                                             GError **error);
    gboolean            gda_data_pivot_populate             (GdaDataPivot *pivot,
                                                             GError **error);

## Description

The GdaDataPivot data model allows one to do some analysis and summarisation on the contents of a data model.

## Details

### struct GdaDataPivot

    struct GdaDataPivot {
    	GObject                object;
    	GdaDataPivotPrivate   *priv;
    };

### struct GdaDataPivotClass

    struct GdaDataPivotClass {
    	GObjectClass           parent_class;
    };

### GdaDataPivotPrivate

    typedef struct _GdaDataPivotPrivate GdaDataPivotPrivate;

### enum GdaDataPivotError

    typedef enum {
    	GDA_DATA_PIVOT_INTERNAL_ERROR,
    	GDA_DATA_PIVOT_SOURCE_MODEL_ERROR,
            GDA_DATA_PIVOT_FIELD_FORMAT_ERROR,
    	GDA_DATA_PIVOT_USAGE_ERROR,
    	GDA_DATA_PIVOT_OVERFLOW_ERROR
    } GdaDataPivotError;

Possible GdaDataPivot related errors.

### gda_data_pivot_new ()

    GdaDataModel *      gda_data_pivot_new                  (GdaDataModel *model);

Creates a new GdaDataModel which will contain analysed data from `model`.

`model` : | a GdaDataModel to analyse data from, or `NULL`. [allow-none]
Returns : | a pointer to the newly created GdaDataModel. [transfer full]

### enum GdaDataPivotFieldType

    typedef enum {
    	GDA_DATA_PIVOT_FIELD_ROW,
    	GDA_DATA_PIVOT_FIELD_COLUMN
    } GdaDataPivotFieldType;

Define types of field to be used when defining a GdaDataPivot analysis.

### gda_data_pivot_add_field ()

    gboolean            gda_data_pivot_add_field            (GdaDataPivot *pivot,
                                                             GdaDataPivotFieldType field_type,
                                                             const gchar *field,
                                                             const gchar *alias,
                                                             GError **error);

Specifies that `field` has to be included in the analysis. `field` is a field specification with the following accepted syntaxes:

- a column name in the source data model (see `gda_data_model_get_column_index()`); or

- an SQL expression involving a column name in the source data model, for example:

      price
      firstname || ' ' || lastname
      nb BETWEEN 5 AND 10

It is also possible to specify several fields to be added, while separating them by a comma (in effect still forming a valid SQL syntax).

`pivot` : | a GdaDataPivot object
`field_type` : | the type of field to add
`field` : | the field description, see below
`alias` : | the field alias, or `NULL`. [allow-none]
`error` : | ta place to store errors, or `NULL`. [allow-none]
Returns : | `TRUE` if no error occurred

Since 5.0

### enum GdaDataPivotAggregate

    typedef enum {
    	GDA_DATA_PIVOT_AVG,
    	GDA_DATA_PIVOT_COUNT,
    	GDA_DATA_PIVOT_MAX,
    	GDA_DATA_PIVOT_MIN,
    	GDA_DATA_PIVOT_SUM
    } GdaDataPivotAggregate;

Possible operations for the data fields.

### gda_data_pivot_add_data ()

    gboolean            gda_data_pivot_add_data             (GdaDataPivot *pivot,
                                                             GdaDataPivotAggregate aggregate_type,
                                                             const gchar *field,
                                                             const gchar *alias,
                                                             GError **error);

Specifies that `field` has to be included in the analysis. `field` is a field specification with the following accepted syntaxes:

- a column name in the source data model (see `gda_data_model_get_column_index()`); or

- an SQL expression involving a column name in the source data model, for examples:

      price
      firstname || ' ' || lastname
      nb BETWEEN 5 AND 10

It is also possible to specify several fields to be added, while separating them by a comma (in effect still forming a valid SQL syntax).

`pivot` : | a GdaDataPivot object
`aggregate_type` : | the type of aggregate operation to perform
`field` : | the field description, see below
`alias` : | the field alias, or `NULL`. [allow-none]
`error` : | ta place to store errors, or `NULL`. [allow-none]
Returns : | `TRUE` if no error occurred

Since 5.0

### gda_data_pivot_populate ()

    gboolean            gda_data_pivot_populate             (GdaDataPivot *pivot,
                                                             GError **error);

Acutally populates `pivot` by analysing the data from the provided data model.

`pivot` : | a GdaDataPivot object
`error` : | ta place to store errors, or `NULL`. [allow-none]
Returns : | `TRUE` if no error occurred.

Since 5.0