Commit 8e837a9a authored by Milena Linda's avatar Milena Linda

Fix: Ajustes e documentação das tabelas

parent c69d7ffb
......@@ -34,6 +34,23 @@ Será considerado **download completo** quando o usuário realizar o download de
* `pgsmart-client.rpm`
* `pgsmart-web.rpm`
> Esta consulta retorna informações detalhadas sobre os downloads relacionados ao curso **pgsys**, com foco em identificar se os usuários baixaram o conjunto completo de ferramentas.
| Coluna | Descrição | Tipo de Dado |
| :--- | :--- | :--- |
| `users_id` | Identificador do usuário no sistema GLPI. | `INT` |
| `email` | E-mail do usuário associado aos downloads. | `TEXT` |
| `ip` | Último endereço IP utilizado pelo usuário para download. | `TEXT` |
| `versao_pgsys` | Versão mais recente do `pgsys` baixada pelo usuário. | `TEXT` |
| `timestamp_pgsys` | Carimbo de data/hora do download mais recente do `pgsys`. | `TIMESTAMP` |
| `context` | Lista concatenada de todos os caminhos de download (`context`) do usuário, ordenados. | `TEXT` |
| `cursos` | Lista de cursos (`pgsys` ou `tdp`) associados aos downloads do usuário. | `TEXT` |
| `arquivos_baixados` | Lista concatenada e única dos nomes dos arquivos baixados. | `TEXT` |
| `pgsys_completo` | Indica se o usuário baixou a suite completa de ferramentas do `pgsys` para a versão mais recente. | `BOOLEAN` |
---
### Para o **TDP**
Será considerado **download completo** quando o usuário realizar o download de todos os componentes essenciais da **Tecnisys Data Platform**, que incluem (dependendo da versão):
......@@ -46,6 +63,22 @@ Será considerado **download completo** quando o usuário realizar o download de
* `tdp-analytics`
* Pacotes auxiliares/documentação
> Esta consulta foca nos downloads do curso **tdp**, verificando se os usuários baixaram a suite completa de componentes, instalador e utilitários.
| Coluna | Descrição | Tipo de Dado |
| :--- | :--- | :--- |
| `users_id` | Identificador do usuário no sistema GLPI. | `INT` |
| `email` | E-mail do usuário associado aos downloads. | `TEXT` |
| `ip` | Último endereço IP utilizado pelo usuário para download. | `TEXT` |
| `versao_tdp` | Versão mais recente do `tdp` baixada pelo usuário. | `TEXT` |
| `timestamp_tdp` | Carimbo de data/hora do download mais recente do `tdp`. | `TIMESTAMP` |
| `context` | Lista concatenada de todos os caminhos de download (`context`) do usuário, ordenados. | `TEXT` |
| `cursos` | Lista de cursos (`pgsys` ou `tdp`) associados aos downloads do usuário. | `TEXT` |
| `arquivos_baixados` | Lista concatenada e única dos nomes dos arquivos baixados. | `TEXT` |
| `tdp_completo` | Indica se o usuário baixou os componentes essenciais (`tdp-components`, `tdp-installer`, `tdp-utils`). | `BOOLEAN` |
---
## Estrutura do Repositório
......@@ -54,8 +87,9 @@ Será considerado **download completo** quando o usuário realizar o download de
.
├── README.md # Documentação principal
└── consultas/ # Scripts e consultas para checar os downloads
├── [consulta_antiga.md](./consultas/consulta_antiga.sql) # Primeira consulta feita por Felipe e Talles
└── [consultas_1.0.md](./consultas/consulta_1.0.md) # Refatorada por Milena
├── [consulta_antiga.sql](./consultas/consulta_antiga.sql) # Primeira consulta feita por Felipe e Talles
├── [pgsys_download.sql](./consultas/pgsys_download.sql) # Refatorada por Milena
└── [tdp_downlaods.sql](./consultas/tdp_download.sql) # Refatorada por Milena
```
---
......
WITH base AS (
SELECT
gu.users_id,
replace(regexp_substr(d.email, '.*/'), '/', '') AS email,
REPLACE(regexp_substr(d.email, '/.*'), '/', '') AS ip,
d.context,
d.timestamp,
replace(regexp_substr(d.context, '/[0-9]+\.[0-9]+\.[0-9]+/'), '/', '') AS versao,
regexp_substr(d.context, '[^/]+$') AS arquivo,
CASE
WHEN d.context LIKE '%pgsys%' THEN 'pgsys'
WHEN d.context LIKE '%tdp%' THEN 'tdp'
END AS curso
FROM nexus.downloads d
LEFT JOIN glpidb.glpi_useremails gu
ON gu.email = replace(regexp_substr(d.email, '.*/'), '/', '')
WHERE regexp_substr(d.email, '/.*') IS NOT NULL AND d.context not LIKE '%/components/%' AND d.context not LIKE '%/repos/%' AND d.context not LIKE '%/utils/%'
),
agrupado AS (
SELECT
users_id,
email,
MAX(ip) AS ip,
-- pega versão mais recente do pgsys
(SELECT b.versao
FROM base b
WHERE b.users_id = d.users_id
AND b.email = d.email
AND b.curso = 'pgsys'
ORDER BY b.timestamp DESC
LIMIT 1) AS versao_pgsys,
(SELECT MAX(b.timestamp)
FROM base b
WHERE b.users_id = d.users_id
AND b.email = d.email
AND b.curso = 'pgsys') AS timestamp_pgsys,
STRING_AGG(d.context, ', ' ORDER BY d.context) AS context,
STRING_AGG(DISTINCT d.arquivo, ', ' ORDER BY d.arquivo) AS arquivos_baixados,
STRING_AGG(DISTINCT curso, ', ') AS cursos
FROM base d
WHERE d.curso = 'pgsys'
GROUP BY users_id, email
)
SELECT
users_id,
email,
ip,
versao_pgsys,
timestamp_pgsys,
context,
cursos,
arquivos_baixados,
CASE
WHEN versao_pgsys BETWEEN '2.2.2' AND '2.2.3'
AND context LIKE '%pgsmart%'
THEN true
WHEN versao_pgsys BETWEEN '2.3.0' AND '2.3.4'
AND context LIKE '%pgsmart%'
THEN true
WHEN versao_pgsys BETWEEN '3.0.0' AND '3.1.1'
AND context LIKE '%pgsmart-agent%'
AND context LIKE '%pgsmart-client%'
THEN true
WHEN versao_pgsys = '4.0.0'
AND context LIKE '%pgsmart-agent%'
AND context LIKE '%pgsmart-client%'
AND context LIKE '%pgsmart-web%'
THEN true
ELSE false
END AS download_completo
FROM agrupado;
\ No newline at end of file
WITH base AS (
SELECT
gu.users_id,
replace(regexp_substr(d.email, '.*/'), '/', '') AS email,
REPLACE(regexp_substr(d.email, '/.*'), '/', '') AS ip,
d.context,
d.timestamp,
replace(regexp_substr(d.context, '/[0-9]+\.[0-9]+\.[0-9]+/'), '/', '') AS versao,
regexp_substr(d.context, '[^/]+$') AS arquivo,
CASE
WHEN d.context LIKE '%pgsys%' THEN 'pgsys'
WHEN d.context LIKE '%tdp%' THEN 'tdp'
END AS curso
FROM nexus.downloads d
LEFT JOIN glpidb.glpi_useremails gu
ON gu.email = replace(regexp_substr(d.email, '.*/'), '/', '')
WHERE regexp_substr(d.email, '/.*') IS NOT null
),
agrupado AS (
SELECT
users_id,
email,
MAX(ip) AS ip,
(SELECT b.versao
FROM base b
WHERE b.users_id = d.users_id
AND b.email = d.email
AND b.curso = 'tdp'
ORDER BY b.timestamp DESC
LIMIT 1) AS versao_tdp,
(SELECT MAX(b.timestamp)
FROM base b
WHERE b.users_id = d.users_id
AND b.email = d.email
AND b.curso = 'tdp') AS timestamp_tdp,
STRING_AGG(d.context, ', ' ORDER BY d.context) AS context,
STRING_AGG(DISTINCT d.arquivo, ', ' ORDER BY d.arquivo) AS arquivos_baixados,
STRING_AGG(DISTINCT curso, ', ') AS cursos
FROM base d
WHERE d.curso = 'tdp'
GROUP BY users_id, email
)
SELECT
users_id,
email,
ip,
versao_tdp,
timestamp_tdp,
context,
cursos,
arquivos_baixados,
CASE
WHEN context LIKE '%tdp-components%'
AND context LIKE '%tdp-installer%'
AND context LIKE '%tdp-utils%'
THEN true
ELSE false
END AS tdp_completo
FROM agrupado;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment