# Ejercicios sesión - extra

## 1. Gestión de Organizaciones

<details>

<summary>Interfaz (UI)</summary>

Accede a la interfaz web de InfluxDB 2.x. [http://localhost:8086](http://localhost:8086/)

<figure><img src="/files/dqUbenQKmJzsxJ4gvfiH" alt=""><figcaption><p>Pantalla principal de InfluxDB 2.x</p></figcaption></figure>

**1. Crear una nueva organización**

* Haz clic en el icono de usuario en el menú lateral.
* Haz clic en "Create Organization" (Crear organización).

<figure><img src="/files/S2fe2kADLhxJFyOGcYmX" alt=""><figcaption><p>Ventana de creación de Organización</p></figcaption></figure>

* Introduce el nombre de la organización, por ejemplo: `SCADA_Industria`.
* **Introduce el nombre del bucket principal** que se asociará a la organización, por ejemplo: `bucket_scada`.
* Completa el resto de pasos del asistente y haz clic en "Save" (Guardar).

**2. Listar organizaciones existentes**

* Haz clic en el icono de usuario en el menú lateral.
* Selecciona la opción **Switch Organizations** (Cambiar de organización).

<figure><img src="/files/jEGzzaiLaM0icQ6Ydquu" alt=""><figcaption><p>Ventana con lista de Organizaciones</p></figcaption></figure>

* Se mostrará una lista con todas las organizaciones disponibles, donde podrás ver sus nombres y cambiar entre ellas.

**3. Modificar el nombre de una organización**

* Haz clic en el icono de usuario en el menú lateral.
* Selecciona la opción **About** (Acerca de).
* Haz clic en **Rename** (Renombrar).

<figure><img src="/files/LQ0Va8vEWK7Y1B4MDXG0" alt=""><figcaption><p>Ventana de verificación de edición de Organización</p></figcaption></figure>

* Aparecerá una ventana de verificación. Confirma que entiendes el impacto y haz clic en <mark style="background-color:red;">**I understand, let’s rename my organization**</mark>.

<figure><img src="/files/HG1qROnw3NtamaUfwMZE" alt=""><figcaption><p>Ventana de edición de Organización</p></figcaption></figure>

* Introduce el nuevo nombre de la organización, por ejemplo, `SCADA_Industria_Norte`.
* Haz clic en **Change organization name** para guardar el cambio.

**4. Eliminar una organización**

* **No es posible eliminar organizaciones desde la interfaz web** en InfluxDB 2.x OSS. Esta opción solo está disponible desde la CLI.

</details>

<details>

<summary>CLI v2.x</summary>

Inicia una terminal desde donde invocar la Influx CLI

**1. Crear una nueva organización y su bucket principal**

{% code title="powershell" overflow="wrap" %}

```powershell
influx org create --name SCADA_Industria
influx bucket create --org SCADA_Industria --name bucket_scada
```

{% endcode %}

*Nota: En CLI, primero creas la organización y después el bucket asociado.*

**2. Listar organizaciones existentes**

{% code title="powershell" overflow="wrap" %}

```powershell
influx org list
```

{% endcode %}

**3. Modificar el nombre de una organización**

* Primero, obtén el ID de la organización:

{% code title="powershell" overflow="wrap" %}

```powershell
influx org list
```

{% endcode %}

* Luego, actualiza el nombre:

{% code title="powershell" overflow="wrap" %}

```powershell
influx org update --org-id <ORG_ID> --name SCADA_Industria_Norte
```

{% endcode %}

Puedes añadir también una descripción si lo deseas:

{% code title="powershell" overflow="wrap" %}

```powershell
influx org update --org-id <ORG_ID> --name SCADA_Industria_Norte --description "Organización norte"
```

{% endcode %}

**4. Eliminar una organización**

* Solo es posible desde la CLI y necesitas un token de operador o permisos administrativos globales:

{% code title="powershell" overflow="wrap" %}

```powershell
influx org delete --id <ORG_ID>
```

{% endcode %}

</details>

## 2. Gestión de Measurement, Tags, Fields

<details>

<summary>Interfaz (UI)</summary>

Accede a la interfaz web de InfluxDB 2.x. [http://localhost:8086](http://localhost:8086/)

<figure><img src="/files/ZgHqMHY526L9rfgc0wmk" alt=""><figcaption><p>Pantalla de Data Explorer</p></figcaption></figure>

**Measurements**

* No existe un botón directo para listar measurements, pero puedes utilizar el **Data Explorer**.
* En el Data Explorer, selecciona el bucket y seguidamente podrás visualizar los \_measument identificados para ese bucket.

**Tags y Fields**

* Una vez seleccionado el measurement, la UI te mostrará automáticamente dos secciones:
  * **Tags:** Aparecen como filtros que puedes aplicar. Aquí verás los nombres de las tags (keys) y podrás desplegar para ver los valores (values) disponibles para cada una.
  * **Fields:** También se muestran como opciones para seleccionar qué datos (variables, sensores, etc.) quieres consultar o graficar.

</details>

### Measurement

<details>

<summary>CLI v2.x</summary>

### **1. Listar measurements**

### **Desde la CLI**

{% code title="powershell" overflow="wrap" %}

```powershell
influx query 'import "influxdata/influxdb/schema" schema.measurements(bucket: "mi_bucket")'
```

{% endcode %}

### **Desde un fichero .flux**

1. Crea el archivo `listar_measurements.flux`:

   <pre class="language-python" data-title="text" data-overflow="wrap"><code class="lang-python">import "influxdata/influxdb/schema"
   schema.measurements(bucket: "mi_bucket")
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file listar_measurements.flux
   </code></pre>

***

### **2. Crear un measurement**

Recuerda: el measurement se crea automáticamente al insertar el primer dato.

### **Desde la CLI**

{% code title="powershell" overflow="wrap" %}

```powershell
influx write -b mi_bucket -o imagina -p s 'miMeasurement,host=miHost valor=123 1622548800'
```

{% endcode %}

### **Desde un fichero (line protocol)**

1. Archivo `crear_measurement.txt`:

   <pre data-title="text" data-overflow="wrap"><code>miMeasurement,host=miHost valor=123 1622548800
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx write -b mi_bucket -o imagina -p s --format=lp -f crear_measurement.txt
   </code></pre>

**¿Qué debes cambiar?**

* `'miMeasurement,host=miHost valor=123 1622548800'`:
  * `miMeasurement`: Nombre del measurement.
  * `host=miHost`: Tag (puedes cambiarlo por lo que necesites).
  * `valor=123`: Campo y valor.
  * `1622548800`: Timestamp (en segundos desde Epoch).

**¿Qué significan los parámetros?**

* `-b`: Bucket (nombre del bucket donde se escriben los datos).
* `-o`: Organización (nombre de la organización en InfluxDB).
* `-p s`: Precisión del timestamp (`s` = segundos, también puede ser `ms`, `us`, `ns`).
* `--format=lp`: Formato del archivo de entrada (`lp` = line protocol).
* `-f`: Archivo de entrada.

***

### **3. Modificar un measurement**

Modificar es igual que crear: simplemente escribe nuevos datos con los campos/tags que quieras añadir.

### **Desde la CLI**

{% code title="powershell" overflow="wrap" %}

```powershell
influx write -b mi_bucket -o imagina -p s 'miMeasurement,host=otroHost nuevoCampo=456 1622549900'
```

{% endcode %}

### **Desde un fichero (line protocol)**

1. Archivo `modificar_measurement.txt`:

   <pre data-title="text" data-overflow="wrap"><code>miMeasurement,host=otroHost nuevoCampo=456 1622549900
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx write -b mi_bucket -o imagina -p s --format=lp -f modificar_measurement.txt
   </code></pre>

**¿Qué debes cambiar?**

* Igual que en el caso de creación, adapta el measurement, los tags, los campos y el timestamp según tus necesidades.

***

### **4. Eliminar un measurement**

### **Desde la CLI**

{% code title="powershell" overflow="wrap" %}

```powershell
influx delete --bucket mi_bucket --org imagina --start 1970-01-01T00:00:00Z --stop $(date -u +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="miMeasurement"'
```

{% endcode %}

**¿Qué debes cambiar?**

* `NOMBRE_DEL_BUCKET`: Tu bucket.
* `NOMBRE_DE_LA_ORG`: Tu organización.
* `_measurement="miMeasurement"`: El nombre del measurement a eliminar.
* `--start` y `--stop`: Rango de tiempo para el borrado (en este caso, todo el rango posible).

**¿Qué significan los parámetros?**

* `--bucket`: Bucket donde están los datos.
* `--org`: Organización.
* `--start`: Fecha/hora de inicio del rango a borrar (formato RFC3339 o Epoch).
* `--stop`: Fecha/hora de fin del rango.
* `--predicate`: Condición para filtrar qué datos borrar (en este caso, por measurement).

</details>

<details>

<summary>CLI (Influx v1 shell)</summary>

Antes de ejecutar este comando, asegúrate de estar usando la base de datos correcta:

{% code title="sql" overflow="wrap" %}

```sql
USE "mi_bucket"
```

{% endcode %}

Sustituye `mi_bucket` por el nombre del bucket que vayas a consultar.

### **1. Listar measurements**

**Comando:** Muestra todos los measurements de la base de datos seleccionada.

{% code title="sql" overflow="wrap" %}

```sql
SHOW MEASUREMENTS
```

{% endcode %}

***

### **2. Crear un measurement**

En InfluxDB no se pueden crear measurements vacíos: se crean automáticamente al insertar el primer dato.

**Comando:** Esto crea el measurement `miMeasurement` si no existe, con el tag `host=miHost` y el campo `valor=123`.

{% code title="sql" overflow="wrap" %}

```sql
INSERT miMeasurement,host=miHost valor=123 1622548800
```

{% endcode %}

***

### **3. Modificar un measurement**

Modificar un measurement en InfluxDB significa simplemente insertar nuevos datos con los campos o tags que quieras añadir.

**Comando:** Esto añade el campo/tag al measurement.

{% code title="sql" overflow="wrap" %}

```sql
INSERT miMeasurement,host=otroHost nuevoCampo=456 1622549900
```

{% endcode %}

***

### **4. Eliminar un measurement**

Tienes dos opciones: borrar todos los datos de un measurement o eliminarlo completamente.

### **a) Borrar todos los datos de un measurement**

{% code title="sql" overflow="wrap" %}

```sql
DELETE FROM "miMeasurement"
```

{% endcode %}

Esto borra todos los datos del measurement, pero el measurement puede seguir existiendo si hay series vacías.

### **b) Eliminar completamente el measurement**

{% code title="sql" overflow="wrap" %}

```sql
DROP MEASUREMENT "miMeasurement"
```

{% endcode %}

Esto elimina todos los datos y el measurement del índice (desaparece completamente).

</details>

### Tags

<details>

<summary>CLI v2.x</summary>

### **1. Listar las claves de tags (tag keys) de un measurement**

**Desde la CLI:**

{% code title="powershell" overflow="wrap" %}

```powershell
influx query 'import "influxdata/influxdb/schema" schema.tagKeys(bucket: "NOMBRE_DEL_BUCKET", predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT")'
```

{% endcode %}

* Cambia `NOMBRE_DEL_BUCKET` por el bucket donde están los datos.
* Cambia `NOMBRE_MEASUREMENT` por el measurement que te interesa.

**Desde un fichero .flux:**

1. Crea `listar_tag_keys.flux`:

   <pre data-title="text" data-overflow="wrap"><code>import "influxdata/influxdb/schema"
   schema.tagKeys(
       bucket: "NOMBRE_DEL_BUCKET",
       predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT"
   )
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell"><strong>influx query --file listar_tag_keys.flux
   </strong></code></pre>

***

### **2. Listar los valores de un tag (tag values)**

**Desde la CLI:**

{% code title="powershell" overflow="wrap" %}

```powershell
influx query 'import "influxdata/influxdb/schema" schema.tagValues(bucket: "NOMBRE_DEL_BUCKET", tag: "NOMBRE_TAG", predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT")' --org NOMBRE_DE_LA_ORG
```

{% endcode %}

* Cambia `NOMBRE_TAG` por la clave del tag que quieres consultar.

**Desde un fichero .flux:**

1. Crea `listar_tag_values.flux`:

   <pre data-title="text" data-overflow="wrap"><code>import "influxdata/influxdb/schema"
   schema.tagValues(
       bucket: "NOMBRE_DEL_BUCKET",
       tag: "NOMBRE_TAG",
       predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT"
   )
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file listar_tag_values.flux
   </code></pre>

***

### **3. Añadir (crear/modificar) tags**

Los tags se añaden/modifican escribiendo nuevos datos:

{% code title="powershell" overflow="wrap" %}

```powershell
influx write -b NOMBRE_DEL_BUCKET -o NOMBRE_DE_LA_ORG -p s 'NOMBRE_MEASUREMENT,NOMBRE_TAG=valorTag campo=valorCampo 1622548800'
```

{% endcode %}

* Cambia `NOMBRE_TAG` por el nombre del tag y `valorTag` por el valor.
* Puedes añadir varios tags separados por comas.

***

### **4. Eliminar todos los datos asociados a un tag (eliminar tag value)**

No puedes eliminar solo el tag o su valor, pero puedes borrar todos los datos que tengan ese tag:

{% code title="powershell" overflow="wrap" %}

```powershell
influx delete --bucket NOMBRE_DEL_BUCKET --org NOMBRE_DE_LA_ORG --start 1970-01-01T00:00:00Z --stop $(date -u +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="NOMBRE_MEASUREMENT" AND NOMBRE_TAG="valorTag"'
```

{% endcode %}

* Esto elimina todos los puntos con ese tag value. El tag desaparecerá cuando no haya datos asociados.

***

### **¿Qué significan los parámetros principales?**

* `-b` / `--bucket`: Nombre del bucket (contenedor de datos).
* `-o` / `--org`: Organización.
* `-p s`: Precisión del timestamp (`s`=segundos).
* `--file`: Archivo con la consulta Flux.
* `--predicate`: Condición para filtrar los datos a eliminar.

<br>

</details>

<details>

<summary>CLI (Influx v1 shell)</summary>

Antes de ejecutar este comando, asegúrate de estar usando la base de datos correcta:

{% code title="sql" overflow="wrap" %}

```sql
USE "mi_bucket"
```

{% endcode %}

Sustituye `mi_bucket` por el nombre del bucket que vayas a consultar.

### **1. Listar las claves de tags (tag keys)**

{% code title="sql" overflow="wrap" %}

```sql
SHOW TAG KEYS FROM "NOMBRE_MEASUREMENT"
```

{% endcode %}

* Cambia `NOMBRE_MEASUREMENT` por el measurement.

### **2. Listar los valores de un tag**

{% code title="sql" overflow="wrap" %}

```sql
SHOW TAG VALUES FROM "NOMBRE_MEASUREMENT" WITH KEY = "NOMBRE_TAG"
```

{% endcode %}

* Cambia `NOMBRE_TAG` por la clave del tag.

### **3. Añadir (crear/modificar) tags**

{% code title="sql" overflow="wrap" %}

```sql
INSERT NOMBRE_MEASUREMENT,NOMBRE_TAG=valorTag campo=valorCampo 1622548800
```

{% endcode %}

* Igual que antes, los tags se añaden al insertar datos.

### **4. Eliminar todos los datos asociados a un tag (eliminar tag value)**

{% code title="sql" overflow="wrap" %}

```sql
DELETE FROM "NOMBRE_MEASUREMENT" WHERE "NOMBRE_TAG" = 'valorTag'
```

{% endcode %}

* Esto borra todos los puntos con ese valor de tag.
* El tag desaparece cuando no quedan datos asociados.

</details>

### Fields

<details>

<summary>CLI v2.x</summary>

### **1. Listar las claves de fields (field keys) de un measurement**

**Desde la CLI:**

{% code title="powershell" overflow="wrap" %}

```powershell
influx query 'import "influxdata/influxdb/schema"
schema.fieldKeys(
  bucket: "NOMBRE_DEL_BUCKET",
  predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT"
)'
```

{% endcode %}

* Cambia `NOMBRE_DEL_BUCKET` por tu bucket.
* Cambia `NOMBRE_MEASUREMENT` por el measurement.

**Desde un fichero .flux:**

1. Crea `listar_field_keys.flux`:

   <pre data-title="text" data-overflow="wrap"><code>import "influxdata/influxdb/schema"
   schema.fieldKeys(
     bucket: "NOMBRE_DEL_BUCKET",
     predicate: (r) => r._measurement == "NOMBRE_MEASUREMENT"
   )
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file listar_field_keys.flux
   </code></pre>

***

### **2. Consultar los valores de un field**

**Desde la CLI (usando `filter`):**

{% code title="powershell" overflow="wrap" %}

```powershell
influx query 'from(bucket: "NOMBRE_DEL_BUCKET")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "NOMBRE_MEASUREMENT" and r._field == "NOMBRE_FIELD")'
```

{% endcode %}

* Cambia `NOMBRE_FIELD` por el nombre del field.

**Desde un fichero .flux:**

1. Crea `consultar_field_values.flux`:

   <pre data-title="text" data-overflow="wrap"><code>from(bucket: "NOMBRE_DEL_BUCKET")
     |> range(start: -1h)
     |> filter(fn: (r) => r._measurement == "NOMBRE_MEASUREMENT" and r._field == "NOMBRE_FIELD")
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file consultar_field_values.flux
   </code></pre>

***

### **3. Añadir (crear/modificar) fields**

Los fields se añaden/modifican escribiendo nuevos datos (Line Protocol):

**Desde la CLI:**

{% code title="poweshell" overflow="wrap" %}

```powershell
influx write -b NOMBRE_DEL_BUCKET -o NOMBRE_DE_LA_ORG -p s 'NOMBRE_MEASUREMENT,tag=valorTag NOMBRE_FIELD=valorField 1622548800'
```

{% endcode %}

* Cambia `NOMBRE_FIELD` y `valorField` por el nombre y valor del field.

***

### **4. Eliminar todos los datos asociados a un field**

No puedes eliminar solo el field, pero puedes borrar todos los datos que tengan ese field usando `--predicate`:

**Desde la CLI:**

{% code title="powershell" overflow="wrap" %}

```powershell
influx delete --bucket NOMBRE_DEL_BUCKET --org NOMBRE_DE_LA_ORG --start 1970-01-01T00:00:00Z --stop $(date -u +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="NOMBRE_MEASUREMENT" AND _field="NOMBRE_FIELD"'
```

{% endcode %}

* Esto elimina todos los puntos con ese field. El field desaparecerá cuando no haya datos asociados.

</details>

<details>

<summary>CLI (Influx v1 shell)</summary>

Antes de ejecutar este comando, asegúrate de estar usando la base de datos correcta:

{% code title="sql" overflow="wrap" %}

```sql
USE "mi_bucket"
```

{% endcode %}

Sustituye `mi_bucket` por el nombre del bucket que vayas a consultar.

### **1. Listar las claves de fields (field keys)**

{% code title="sql" overflow="wrap" %}

```sql
SHOW FIELD KEYS FROM "NOMBRE_MEASUREMENT"
```

{% endcode %}

* Cambia `NOMBRE_MEASUREMENT` por el measurement.

### **2. Consultar los valores de un field**

{% code title="sql" overflow="wrap" %}

```sql
SELECT "NOMBRE_FIELD" FROM "NOMBRE_MEASUREMENT" WHERE time > now() - 1h
```

{% endcode %}

* Cambia `NOMBRE_FIELD` por el nombre del field.

### **3. Añadir (crear/modificar) fields**

{% code title="sql" overflow="wrap" %}

```sql
INSERT NOMBRE_MEASUREMENT,tag=valorTag NOMBRE_FIELD=valorField 1622548800
```

{% endcode %}

* Igual que antes, los fields se añaden al insertar datos.

### **4. Eliminar todos los datos asociados a un field**

{% code title="sql" overflow="wrap" %}

```sql
DELETE "NOMBRE_FIELD" FROM "NOMBRE_MEASUREMENT"
```

{% endcode %}

* Esto borra todos los puntos de ese field en el measurement.

</details>

## 3. Gestión de Buckets

<details>

<summary>Interfaz (UI)</summary>

1. Accede a la interfaz web de InfluxDB (en [`http://localhost:8086`](http://localhost:8086/)).

### 2. Listar los Buckets existentes

En el menú lateral, selecciona **Load Data** y luego **Buckets**.

<figure><img src="/files/NWpKN02FYrwNsy4lTkJo" alt=""><figcaption><p>Pantalla de Buckets</p></figcaption></figure>

### **2. Crea un bucket con retención específica**

* Haz clic en **Create Bucket**.
* Asigna un nombre al bucket (por ejemplo, `scada_datos_7d`).

<figure><img src="/files/TLKE3XrGvZoNrpZzWPz8" alt=""><figcaption><p>Pantalla de Create Bucket</p></figcaption></figure>

* Define la política de retención:
  * En el campo de retención, especifica el tiempo de vida de los datos (por ejemplo, 7 días).
  * Si deseas que los datos nunca se eliminen automáticamente, selecciona "Infinite".
* Haz clic en **Create** o **Crear** para guardar el bucket.

### 3. Modificar el nombre y retención de un bucket

* Haz clic en el **Settings** asociado al bucket que quieres modificar

<figure><img src="/files/9BBMvwlGisp5NtVKT4gO" alt=""><figcaption><p>Pantalla de edición del bucket</p></figcaption></figure>

* Cambia la retención que deseas. Considera que colocar una retención inferior a la existente desencadenará el borrado automático de series que contengan un timestamp superior a la retención definida.
* Cambia el nombre del bucket con el botón "Rename". Considera que cambiar el nombre puede impactar en herramientas externas.

### 4. Eliminar un bucket

* Haz clic en el ícono de la papelera asociado al bucket que quieres eliminar

<figure><img src="/files/Z1MU2P6i6zwjjxvxuCZS" alt=""><figcaption><p>Mensaje de confirmación antes de eliminar</p></figcaption></figure>

* Te mostrará un mensaje de confirmación con lo que podrás borrar el bucket por completo

</details>

<details>

<summary>CLI v2.x</summary>

### 1. **Verifica los buckets creados**:

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket list --org <NOMBRE_ORG>
```

{% endcode %}

* `<NOMBRE_ORG>`: Nombre de tu organización.

### **2. Crea un bucket con retención específica** usando el comando:

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket create --name <NOMBRE_BUCKET> --org <NOMBRE_ORG> --retention <DURACIÓN>
```

{% endcode %}

* `<NOMBRE_BUCKET>`: Nombre que le quieres dar al bucket (por ejemplo, `scada_datos_7d`).
* `<DURACIÓN>`: Tiempo de retención, por ejemplo, `7d` para 7 días, `30d` para 30 días, `365d` para un año, etc.

**Ejemplo concreto:**

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket create --name scada_datos_7d --org <NOMBRE_ORG> --retention 7d
influx bucket create --name scada_datos_30d --org <NOMBRE_ORG> --retention 30d
influx bucket create --name scada_datos_1y --org <NOMBRE_ORG> --retention 365d
```

{% endcode %}

Si no especificas la opción `--retention`, el bucket tendrá retención infinita (no se borran los datos automáticamente).

### **3. Modificar el nombre y retención de un bucket**

Para modificar la política de retención de un bucket ya existente, utiliza el comando:

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket update --id <ID_BUCKET> --name <NUEVO_NOMBRE> --retention <NUEVA_DURACIÓN>
```

{% endcode %}

### **4. Eliminar un bucket**

Para eliminar un bucket y todos sus datos:

{% code title="poweshell" overflow="wrap" %}

```powershell
influx bucket delete --id <ID_BUCKET>
```

{% endcode %}

</details>

### Creación y asociación de DBRP (**Database and Retention Policy)**

<details>

<summary>CLI (Influx v1 shell)</summary>

### **1. Crear buckets con diferentes retenciones**

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket create --name scada_rp_7d --retention 7d
influx bucket create --name scada_rp_30d --retention 30d
influx bucket create --name scada_rp_1y --retention 365d
```

{% endcode %}

***

### **2. Obtener los IDs de los buckets**

{% code title="powershell" overflow="wrap" %}

```powershell
influx bucket list
```

{% endcode %}

(Anota los IDs de cada bucket para los siguientes pasos.)

***

### **3. Crear los mapeos DBRP (Database-Retention Policy Mapping)**

{% code title="powershell" overflow="wrap" %}

```powershell
influx v1 dbrp create --bucket-id <ID_BUCKET_7D> --db scada_db --rp rp_7d --default
influx v1 dbrp create --bucket-id <ID_BUCKET_30D> --db scada_db --rp rp_30d
influx v1 dbrp create --bucket-id <ID_BUCKET_1Y> --db scada_db --rp rp_1y
```

{% endcode %}

(Reemplaza `<ID_BUCKET_7D>`, `<ID_BUCKET_30D>`, `<ID_BUCKET_1Y>` por los IDs reales de tus buckets.)

***

### **4. Administrar los DBRP**

### **Listar todos los DBRP**

{% code title="powershell" overflow="wrap" %}

```powershell
influx v1 dbrp list
influx v1 dbrp list --db scada_db
influx v1 dbrp list --bucket-id <ID_BUCKET>
```

{% endcode %}

### **Modificar (actualizar) un DBRP**

{% code title="powershell" overflow="wrap" %}

```powershell
influx v1 dbrp update --id <ID_DBRP> --rp rp_30d --default
```

{% endcode %}

* Obtén `<ID_DBRP>` con el comando de listar.
* Si quieres que esa RP sea la predeterminada, añade `--default`

### **Eliminar un DBRP**

{% code title="powershell" overflow="wrap" %}

```powershell
influx v1 dbrp delete --id <ID_DBRP>
```

{% endcode %}

### **Cambiar el nombre a una DB creada con DBRP**

No puedes renombrar directamente la base de datos virtual de un DBRP. Debes eliminar los mapeos antiguos y crear nuevos mapeos con el nombre de base de datos deseado, repitiendo el proceso para cada RP asociada

</details>

## 4. Gestión de series cardinales

<details>

<summary>CLI v2.x</summary>

### **1. Cardinalidad por Bucket**

Es el número total de series únicas que existen en un bucket, considerando todas sus mediciones y combinaciones de tags y fields

**Desde la CLI**

{% code title="powershell" overflow="wrap" %}

```powershell
import "influxdata/influxdb"
influxdb.cardinality(bucket: "NOMBRE_DEL_BUCKET", start: -30d)
```

{% endcode %}

**Desde un fichero.flux:**

1. Crea `ver_cardinality.flux`:

{% code title="text" overflow="wrap" %}

```
import "influxdata/influxdb"
influxdb.cardinality(bucket: "NOMBRE_DEL_BUCKET", start: -30d)
```

{% endcode %}

2. Ejecuta:

{% code title="powershell" overflow="wrap" %}

```powershell
influx query --file ver_cardinality.flux
```

{% endcode %}

### **2. Cardinalidad por Measurement**

Es el número de series únicas dentro de una medición específica, es decir, cuántas combinaciones diferentes de tags existen para esa medición

#### **Desde la CLI** <a href="#desde-la-cli" id="desde-la-cli"></a>

{% code title="powershell" overflow="wrap" %}

```powershell
import "influxdata/influxdb"
influxdb.cardinality(
  bucket: "NOMBRE_DEL_BUCKET",
  start: -30d,
  predicate: (r) => r._measurement == "NOMBRE_DE_LA_MEDICION"
)

```

{% endcode %}

#### **Desde un fichero .flux** <a href="#desde-un-fichero-.flux" id="desde-un-fichero-.flux"></a>

1. Crea el archivo `ver_cardinality_measurement_bucket.flux`:

   <pre data-title="text" data-overflow="wrap"><code>import "influxdata/influxdb"
   influxdb.cardinality(
     bucket: "NOMBRE_DEL_BUCKET",
     start: -30d,
     predicate: (r) => r._measurement == "NOMBRE_DE_LA_MEDICION"
   )

   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file ver_cardinality_measurement_bucket.flux
   </code></pre>

### **3. Cardinalidad por Tag**

Es la cantidad de valores únicos que tiene un tag en particular dentro de un bucket o medición. Los tags son el principal motor de la cardinalidad en InfluxDB

#### **Desde la CLI** <a href="#desde-la-cli" id="desde-la-cli"></a>

{% code title="powershell" overflow="wrap" %}

```powershell
import "influxdata/influxdb/schema"

schema.tagValues(
  bucket: "NOMBRE_DEL_BUCKET",
  tag: "NOMBRE_DEL_TAG",
  predicate: (r) => r._measurement == "NOMBRE_DE_LA_MEDICION",
  start: -30d
) |> count()
```

{% endcode %}

#### **Desde un fichero .flux** <a href="#desde-un-fichero-.flux" id="desde-un-fichero-.flux"></a>

1. Crea el archivo `ver_cardinalidad_tag_bucket.flux`:

   <pre data-title="text" data-overflow="wrap"><code>import "influxdata/influxdb/schema"

   schema.tagValues(
     bucket: "NOMBRE_DEL_BUCKET",
     tag: "NOMBRE_DEL_TAG",
     predicate: (r) => r._measurement == "NOMBRE_DE_LA_MEDICION",
     start: -30d
   ) |> count()
   </code></pre>
2. Ejecuta:

   <pre class="language-powershell" data-title="powershell" data-overflow="wrap"><code class="lang-powershell">influx query --file ver_cardinalidad_tag_bucket.flux
   </code></pre>

</details>

<details>

<summary>CLI (Influx v1 shell)</summary>

### 1. **Requisitos previos: DBRP Mapping** <a href="#undefined" id="undefined"></a>

Antes de poder usar InfluxQL (el lenguaje de InfluxDB 1.x) sobre un bucket de InfluxDB 2.x, necesitas tener configurado el **DBRP mapping** (Database-Retention Policy mapping) para el bucket que quieras consultar.

### **2. Gestionar la cardinalidad** <a href="#undefined" id="undefined"></a>

> **Importante:**\
> Los comandos `SHOW SERIES CARDINALITY` y variantes **solo están implementados en InfluxDB Enterprise** y no en OSS, incluso usando el shell v1 sobre InfluxDB 2.x OSS.\
> Si los usas y ves "not implemented", es por esta limitación.

#### **Cardinalidad total de la base de datos**

{% code title="sql" overflow="wrap" %}

```sql
SHOW SERIES CARDINALITY
```

{% endcode %}

* Devuelve el número de series únicas en toda la base de datos seleccionada.

#### **Cardinalidad de una medición específica**

{% code title="sql" overflow="wrap" %}

```sql
SHOW SERIES CARDINALITY FROM "nombre_de_la_medicion"
```

{% endcode %}

* Devuelve la cardinalidad estimada para una medición concreta.

#### **d) Cardinalidad de tags y fields**

* **Tag keys:**

  <pre class="language-sql" data-title="sql" data-overflow="wrap"><code class="lang-sql">SHOW TAG KEY CARDINALITY
  </code></pre>
* **Valores de un tag específico:**

  <pre class="language-sql" data-title="sql" data-overflow="wrap"><code class="lang-sql">SHOW TAG VALUES CARDINALITY WITH KEY = "nombre_del_tag"
  </code></pre>
* **Field keys:**

  <pre class="language-sql" data-title="sql" data-overflow="wrap"><code class="lang-sql">SHOW FIELD KEY CARDINALITY

  </code></pre>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://darioaplicano.gitbook.io/influxdb2.x/sesion-1/guion-de-la-sesion/documentacion/ejercicios-sesion-extra.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
