CLEAR DATA / BORRAR DATOS

English (Español a continuación)

In an ASO cube you can:

  • Clear all data.
  • Clear data from a specific section of the cube.

a) Clear all data

It deletes all data from the database.

It can be done from the console or via Maxl:

a.1.- Console:

  • Right click on the database and select delete. Then select:
    • All data

a.2.- Maxl:

  • alter database ‘Application name’.’Database name’ reset;

b) Partial clearing

It deletes data from a specific section of the database.

  • Partial clearing can be done from the console or through Maxl.
  • The specific region is specified using the MDX language (this language is different from the one used in the BSO database scripts).
    • Commands can be used: for example [Months].children
  • The region must be symmetric: eg:
    • {(January, 2020)} It is a symmetric region (select all data from January 2020).
    • {(January, 2020),(February,2021} is NOT symmetric since it selects the data from January 2020 and the data from February 2021.
    • CrossJoin({[January],[February]},{[2020]}) It is a symmetric region (selects all data from January and February 2020).
  • The members of the deleted region must be from stored dimensions (they cannot be members of dynamic hierarchies or attribute dimensions).
  • If a member of a higher level is specified, it implies the deletion of all the level 0 members that are dependent: for example, if the superior member 1Q is specified, it implies the deletion of its level 0: January, February and March.

There are 2 types of clearing: physical and logical:

Physical clearing: the cells-inputs of the specified region are removed.

  • This deletion generates missing values ​​in the deleted section.
  • The time this deletion takes depends on the size of the data loaded in the database (not the data deleted), so it is recommended when deleting large sections of data.
  • If there are multiple slices, this operation automatically merges all the slices into the main slice and materializes all the aggregated views that were in the main slice before the deletion.
  • After materializing the aggregations, physical clearing results in faster queries than logical clearing.

Logical clearing: data from the deletion section is copied to a new slice with the opposite sign so that the aggregation of the existing slice and the new one equals zero.

  • This clearing generates zero values ​​in the deletion section.
  • The amount of time this clearing takes depends on the size of the data being clear (this form of clearing can be significantly faster than physical clearing).
  • As this process generates a new slice, it produces an increase in the size of the database.
  • It is NOT recommended to perform a second logical clearing in the same section where one has already been performed (compensation cells created in the first clearing are not cleared and new compensation cells are not created).
  • This clearing involves merging with the main slice only the slice with zero values ​​and materializes added views only for the new slice.

b.1.- Partial clearing from the console

Right click on the database and select “Delete”. Then select:

  • Partial data.

The specific area is defined with the following nomenclature:

  • {([Dim Member 1],[Dim Member 2],[Dim Member 3]…)}

For the unspecified dimensions all their data in the specified area are cleared.

This is a logical clearing.

Let’s see an example: A database with the following outline:

  • Markets
  • Vendors
  • Products
  • Year
  • Months
  • Data

We want to delete January 2020 sales from the German market:

  • {([Germany],[2020],[January],[Sales])}

For the unspecified dimensions (Vendors and Products), all their data in the specified area are deleted.

Attention: Enclose the members between […] is not necessary unless its name has blank spaces.

In the following example we delete January 2020 sales from all the descendant markets of Europe:

  • {([Europe],[2020],[January],[Sales])}

If we want to delete the data of January and February 2020 from all the markets:

  • CrossJoin({[January],[February]},{[2020]})

If we want to delete the data of January and February 2020 from the German market:

  • CrossJoin(CrossJoin({[January],[February]},{[2020]}),{[Germany]})

Attention:

  • We use a first CrossJoin to relate the dimensions «Months» and «Years» (the members that belong to each dimension go between {…} and the two dimensions that we relate go between (…).
  • We use a second CrossJoin to relate the first CrossJoin with the “Markets” dimension; this relationship also goes between (…).

To define the deletion area we can use variables:

  • {([&MES],[2020],[Europe])}

b.2.- Partial deletion using Maxl

a) Physical clearing

The expression used:

  • alter database ‘Application name’.’Database name’ clear data in region ‘xxxx’ physical;

The specific region is enclosed in single quotes.

Let’s see an example: We have the «Markets» database (within the «Sales» application) and we want to delete January 2020 sales from the German market.

  • alter database ‘Sales’.’Markets’ clear data in region ‘{([Germany],[2020],[January],[Sales])}’ physical;

If we want to delete the data of January and February 2020 from all the markets:

  • alter database ‘Sales’.’Markets’ clear data in region ‘CrossJoin({[January],[February]},{[2020]})’ physical;

If we want to delete the data of January and February 2020 from the German market:

  • alter database ‘Sales’.’Markets’ clear data in region ‘CrossJoin(CrossJoin({[January],[February]},{[2020]}),{[Germany]})’ physical;

If we want to delete the data of every months of 2020 from the German market, we can include the superior member [Months] or we can use the MDX command [Months].children:

  • alter database ‘Sales’.’Markets’ clear data in region ‘CrossJoin(CrossJoin({[Months].children},{[2020]}),{[Germany]})’ physical;

b) Logical clearing

The Maxl instructions are identical to the physical clearing instructions with the only difference that the instruction “physical” is not included.

  • alter database ‘Sales’.’Markets’ clear data in region ‘{([Germany],[2020],[January],[Sales])}’;

Español

En un cubo ASO se puede:

  • Borrar todos los datos del cubo.
  • Borra los datos de una sección del cubo.

a) Borrado completo

Borra todos los datos de la base de datos.

El borrado completo se puede realizar desde la consola o mediante Maxl:

a.1.- Consola:

  • Botón derecho sobre la base y se selecciona borrar. Se selecciona la opción:
    • Todos los datos

a.2.- Maxl:

  • alter database ‘Nombre aplicación’.’Nombre base’ reset;

b) Borrado parcial

Borra los datos de una sección determinada de la base de datos.

  • El borrado parcial se puede realizar desde la consola o mediante Maxl.
  • La región de borrado se especifica utilizando el lenguaje MDX (lenguaje que es diferente al utilizado en los scripts de las bases BSO).
    • Se pueden utilizar comandos: por ejemplo [Meses].children
  • La región debe ser simétrica: por ejemplo;
    • {(Enero, 2020)} SÍ es una región simétrica (selecciona todos los datos de enero del año 2020).
    • {(Enero, 2020),(Febrero,2021} NO es simétrica ya que selecciona los datos de enero del año 2020 y los datos de febrero del año 2021.
    • CrossJoin({[Enero],[Febrero]},{[2020]}) SÍ es una región simétrica (selecciona todos los datos de enero y febrero del año 2020).
  • Los miembros de la región borrada deben ser de almacenamiento (no pueden ser miembros de jerarquías dinámicas o de dimensiones atributo).
  • Si se especifica un miembro de un nivel superior, implica el borrado de todos los miembros niveles 0 que sean dependientes: por ejemplo, si se especifica el miembro superior 1T implica el borrado de sus niveles cero: Enero, Febrero y Marzo.

Hay 2 tipos de borrado: borrado físico y borrado lógico:

Borrado físico: se eliminan las celdas-inputs de la región especificada.

  • Este borrado genera valores missing en la sección borrada.
  • El tiempo que conlleva este borrado depende del tamaño de los datos cargados en la base (no de los datos borrados), por lo que se recomienda cuando se borran largas secciones de datos.
  • Si hay múltiples slices esta operación fusiona de forma automática todas las slices en la slice principal y materializa todas las vistas agregadas que hubiera en la slice principal antes del borrado.
  • Después de materializar las agregaciones el borrado físico resulta en consultas más rápidas que el borrado lógico.

Borrado lógico: los datos de la sección de borrado se copian en una nueva slice con el signo contrario de forma que el agregado de lo existente y de la nueva slice da cero.

  • Este borrado genera valores cero en la sección borrada.
  • El tiempo que conlleva este borrado depende del tamaño de los datos borrados (esta forma de borrado puede ser significativamente más rápida que el borrado físico).
  • Como este proceso genera una nueva slice conlleva el aumento del tamaño de la base de datos.
  • NO se recomienda realizar un segundo borrado lógico en la misma sección en la que ya se ha realizado uno (no se borran las celdas de compensación creadas en el primer borrado y no se crean nuevas celdas de compensación).
  • Este borrado conlleva la fusión con la slice principal únicamente de la slice con valores cero y materializa vistas agregadas únicamente para la nueva slice.

b.1.- Borrado parcial desde la consola

Botón derecho sobre la base y se selecciona borrar. Se selecciona la opción:

  • Datos parciales.

El área de borrado se define con la siguiente nomenclatura:

  • {([Miembro Dim 1],[Miembro Dim 2],[Miembro Dim 3]…)}          

Las dimensiones no especificadas se borran todos sus datos en el área especificada.

Es un borrado lógico.

Veamos un ejemplo: Una base de datos con el siguiente outline:

  • Mercados
  • Vendedores
  • Productos
  • Año
  • Meses
  • Datos

Queremos borrar las ventas de enero del año 2020 del mercado alemán:

  • {([Alemania],[2020],[Enero],[Ventas])}

Las dimensiones no especificadas (Vendedores y Productos) se borran todos sus datos en el área especificada.

Atención: Poner los nombres de los miembros entre […] no es necesario salvo que el nombre tenga espacios en blanco.

En el siguiente ejemplo borramos las ventas de enero del año 2020 de todos los mercados descendientes del miembro Europa:

  • {([Europa],[2020],[Enero],[Ventas])}

Si queremos borrar los datos de enero y febrero del año 2020 de todos los mercados:

  • CrossJoin({[Enero],[Febrero]},{[2020]})

Si queremos borrar los datos de enero y febrero del año 2020 del mercado alemán:

  • CrossJoin(CrossJoin({[Enero],[Febrero]},{[2020]}),{[Alemania]})

Atención:

  • Utilizamos un primer CrossJoin para relacionar las dimensiones “Meses” y “Años” (los miembros que pertenecen a cada dimensión van entre {…} y las dos dimensiones que relacionamos van entre (…).
  • Utilizamos un segundo CrossJoin para relacionar el primer CrossJoin con la dimensión “Mercados”; esta relación también va entre (…).

Para definir el área de borrado podemos utilizar variables:

  • {([&MES],[2020],[Europa])}

b.2.- Borrado parcial mediante Maxl

a) Borrado físico

La expresión que se utiliza:

  • alter database ‘Nombre aplicación’.’Nombre base’ clear data in region ‘xxxx’ physical;

La región de borrado va entre comillas simples.

Veamos un ejemplo: Tenemos la base de datos “Mercados” (dentro de la aplicación “Ventas”) y queremos borrar las ventas de enero del año 2020 del mercado alemán.

  • alter database ‘Ventas’.’Mercados’ clear data in region ‘{([Alemania],[2020],[Enero],[Ventas])}’ physical;

Si queremos borrar los datos de enero y febrero del año 2020 de todos los mercados:

  • alter database ‘Ventas’.’Mercados’ clear data in region ‘CrossJoin({[Enero],[Febrero]},{[2020]})’ physical;

Si queremos borrar los datos de enero y febrero del año 2020 del mercado alemán:

  • alter database ‘Ventas’.’Mercados’ clear data in region ‘CrossJoin(CrossJoin({[Enero],[Febrero]},{[2020]}),{[Alemania]})’ physical;

Si queremos borrar los datos de todos los meses del año 2020 del mercado alemán podemos incluir el miembro superior [Meses] o también podemos utilizar el comando MDX [Meses].children:

  • alter database ‘Ventas’.’Mercados’ clear data in region ‘CrossJoin(CrossJoin({[Meses].children},{[2020]}),{[Alemania]})’ physical;

b) Borrado lógico

Las instrucciones Maxl son idénticas a las del borrado físico con la única diferencia que no llevan la etiqueta “physical”.

  • alter database ‘Ventas’.’Mercados’ clear data in region ‘{([Alemania],[2020],[Enero],[Ventas])}’;