emidiosouza commited on
Commit
8dde0ad
·
verified ·
1 Parent(s): 82ae898

feat: nova query do future mining para extrações Llama Index

Browse files
Files changed (1) hide show
  1. query.sql +194 -79
query.sql CHANGED
@@ -1,107 +1,222 @@
1
  SELECT
2
- id,
3
- id AS "Id da entrada no banco",
4
- "createdAt" AS "Data Criação",
5
  e.name AS "Nome do documento",
6
- -- alvo
7
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(mineralization->'region'->>'target_or_deposit', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "Alvo ou depósito", -- OK
8
- -- ore
9
- array_to_string(ARRAY_AGG(DISTINCT(mineralization->>'ore')), ', ') AS "Tipo de mineralização",
10
- -- cidade
11
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(t.mineralization->'region'->>'city', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "Cidades",
12
- -- estado
13
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(t.mineralization->'region'->>'state', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "Estado",
14
- -- país
15
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(t.mineralization->'region'->>'country', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "País",
16
- -- região
17
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(t.mineralization->'region'->>'region_name', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "Região",
18
- -- quantidade mineralizacão
19
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(DISTINCT NULLIF(NULLIF(t.mineralization->>'quantity', 'Não especificado'), '')), ', '), ''), 'Não especificado') AS "Quantidade de minério",
20
 
21
- COALESCE(NULLIF(array_to_string(ARRAY(
22
- SELECT jsonb_extract_path_text(concentration, 'name_of_ore') || ' - (' || jsonb_extract_path_text(concentration, 'concentration_of_ore') || ')'
23
- FROM jsonb_array_elements(mineralization->'concentration') AS concentration
24
- ), ', '), ''), 'Não especificado') AS "Concentração do minério",
25
-
26
- -- extra_info
27
- COALESCE(NULLIF(array_to_string(ARRAY_AGG(NULLIF(NULLIF(t.mineralization->'region'->>'extra_info', 'Não especificado'), '')), ' | '), ''), 'Não especificado') AS "Informações adicionais",
28
-
29
- ---------
30
- COALESCE(NULLIF(data->'responseData'->2->'response'->>'mineralizationSignatures', ''), 'Não identificado') AS "Assinaturas de mineralização", -- OK
31
 
32
- COALESCE(NULLIF(mineralization->'geological_context'->>'tectonic_context', ''), 'Não especificado') AS "Contexto tectônico", -- OK
33
- COALESCE(NULLIF(mineralization->'geological_context'->>'geological_context_description', ''), 'Não especificado') AS "Contexto geológico", -- OK
34
- COALESCE(NULLIF(mineralization->'geological_context'->>'context_of_present_rocks', ''), 'Não especificado') AS "Rochas presentes", -- OK
35
- ----------
36
-
37
- -- Rochas sedimentares
38
- COALESCE(NULLIF(array_to_string(ARRAY(
39
- SELECT jsonb_extract_path_text(sedimentares, 'name') || ' (' || 'Tipo: ' || jsonb_extract_path_text(sedimentares, 'type') || ', Relações de contato: ' || jsonb_extract_path_text(sedimentares, 'contact_relations') || ')'
40
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') AS sedimentares
41
- ), '; '), ''), 'Não identificado') AS "Rochas sedimentares",
 
42
 
43
- -- Rochas metamórficas
44
- COALESCE(NULLIF(array_to_string(ARRAY(
45
- SELECT jsonb_extract_path_text(metamorficas, 'name') || ' (' || 'Tipo: ' || jsonb_extract_path_text(metamorficas, 'type') || ', Relações de contato: ' || jsonb_extract_path_text(metamorficas, 'contact_relations') || ')'
46
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') AS metamorficas
47
- ), '; '), ''), 'Não identificado') AS "Rochas metamórficas",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- -- Rochas ígneas intrusivas
50
- COALESCE(NULLIF(array_to_string(ARRAY(
51
- SELECT jsonb_extract_path_text(igneas_i, 'name') || ' (' || 'Tipo: ' || jsonb_extract_path_text(igneas_i, 'type') || ', Relações de contato: ' || jsonb_extract_path_text(igneas_i, 'contact_relations') || ')'
52
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') AS igneas_i
53
- ), '; '), ''), 'Não identificado') AS "Rochas ígneas intrusivas",
54
 
55
- -- Rochas ígneas extrusivas
56
- COALESCE(NULLIF(array_to_string(ARRAY(
57
- SELECT jsonb_extract_path_text(igneas_e, 'name') || ' (' || 'Tipo: ' || jsonb_extract_path_text(igneas_e, 'type') || ', Relações de contato: ' || jsonb_extract_path_text(igneas_e, 'contact_relations') || ')'
58
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') AS igneas_e
59
- ), '; '), ''), 'Não identificado') AS "Rochas ígneas extrusivas",
60
 
61
- -- Rochas ígneas subvulcânicas
62
- COALESCE(NULLIF(array_to_string(ARRAY(
63
- SELECT jsonb_extract_path_text(sv, 'name') || ' (' || 'Tipo: ' || jsonb_extract_path_text(sv, 'type') || ', Relações de contato: ' || jsonb_extract_path_text(sv, 'contact_relations') || ')'
64
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') AS sv
65
- ), '; '), ''), 'Não identificado') AS "Rochas ígneas subvulcânicas",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
  -- Rochas hospedeiras
68
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'name', '[null]'), 'Não identificado') AS "Nomes de rochas hospedeiras",
69
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'geologicalEnvironments', '[null]'), 'Não identificado') AS "Ambiente geológico",
70
- COALESCE(NULLIF(array_to_string(ARRAY(SELECT jsonb_array_elements_text(data->'responseData'->2->'response'->'mineralFabric')), ', '), ''), 'Não identificado') AS "Textura de mineralização",
 
71
  COALESCE(NULLIF(array_to_string(ARRAY(
72
  SELECT jsonb_extract_path_text(associatedMinerals, 'name') || ' (' || 'Cor: ' || jsonb_extract_path_text(associatedMinerals, 'color') || ', Textura: ' || jsonb_extract_path_text(associatedMinerals, 'textures') || ', Nível de Alteração: ' || jsonb_extract_path_text(associatedMinerals, 'alterationLevel') || ')'
73
  FROM jsonb_array_elements(data->'responseData'->2->'response'->'associatedMinerals') AS associatedMinerals
74
  ), ', '), ''), 'Não identificado') AS "Minerais associados",
75
 
76
- COALESCE(NULLIF(data->'responseData'->2->'response'->>'fluidInclusionsAnalysis', '[]'), 'Não especificado') AS "Análise de inclusões fluidas",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
- -- Alterações hidrotermais
79
- COALESCE(NULLIF(array_to_string(ARRAY(SELECT jsonb_array_elements_text(data->'responseData'->2->'response'->'hydrotermal_alterations'->'alterationTypes')), ', '), ''), 'Não identificado') AS "Tipos de alterações hidrotermais",
80
- COALESCE(NULLIF(array_to_string(ARRAY(SELECT jsonb_array_elements_text(data->'responseData'->2->'response'->'hydrotermal_alterations'->'associatedMinerals')), ', '), ''), 'Não identificado') AS "Minerais associados a alterações hidrotermais",
81
-
82
- COALESCE(NULLIF(data->'responseData'->3->'response'->>'structural_mapping', '[]'), 'Não especificado') AS "Geologia estrutural da região",
83
- COALESCE(NULLIF(data->'responseData'->4->'response'->>'structureMineralizationRelation', '[]'), 'Não especificado') AS "Relação estrutura-mineralização",
84
- COALESCE(NULLIF(data->'responseData'->5->'response'->>'stableIsotopes', '[]'), 'Não especificado') AS "Isótopos Estáveis e Radiogênicos",
85
- COALESCE(NULLIF(data->'responseData'->5->'response'->>'traceElementsAndRareEarths', '[]'), 'Não especificado') AS "Elementos traço e terras raras",
86
- COALESCE(NULLIF(data->'responseData'->6->'response'->>'mineralizationSignatures', '[]'), 'Não especificado') AS "Assinatura geofísica",
87
- COALESCE(NULLIF(data->'responseData'->7->'response'->>'additionalInformation', '[]'), 'Não especificado') AS "Informações adicionais de mineralização",
88
- COALESCE(NULLIF(data->'responseData'->8->'response'->>'potential', '[]'), 'Não especificado') AS "Potencial de descoberta",
89
- COALESCE(NULLIF(data->'responseData'->9->'response'->>'strengths', '[]'), 'Não especificado') AS "Pontos fortes",
90
- COALESCE(NULLIF(data->'responseData'->9->'response'->>'investment_risk', '[]'), 'Não especificado') AS "Risco de investimento",
91
- COALESCE(NULLIF(data->'responseData'->9->'response'->>'economic_potential', '[]'), 'Não especificado') AS "Potencial econômico",
92
- COALESCE(NULLIF(data->'responseData'->10->'response'->>'explanation', '[]'), 'Não especificado') AS "Explicação da favorabilidade",
93
- COALESCE(NULLIF(data->'responseData'->10->'response'->>'favorability', '[]'), 'Não especificado') AS "Favorabilidade"
94
 
95
 
96
  FROM
97
  "Future Mining"."Extraction" e
98
- CROSS JOIN LATERAL
99
- jsonb_array_elements(e.data->'responseData'->0->'response'->'mineralizations') AS t(mineralization)
100
  GROUP BY
101
  e."createdAt",
102
  e.id,
103
  e.name,
104
- mineralization;
105
-
106
 
107
 
 
1
  SELECT
2
+ e.id AS "Id da entrada no banco",
3
+ e."createdAt" AS "Data Criação",
 
4
  e.name AS "Nome do documento",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
+ -- Alvo ou depósito
7
+ COALESCE(data->'responseData'->0->'response'->>'target_or_deposit', 'Não especificado') AS "Alvo ou depósito",
 
 
 
 
 
 
 
 
8
 
9
+ -- Tipo de mineralização
10
+ COALESCE(
11
+ array_to_string(
12
+ ARRAY(
13
+ SELECT CONCAT(
14
+ mineralization->>'type'
15
+ )
16
+ FROM jsonb_array_elements(data->'responseData'->0->'response'->'mineralizations') AS mineralization
17
+ ), ', '
18
+ ), 'Não especificado'
19
+ ) AS "Tipo de mineralização",
20
 
21
+
22
+
23
+ -- Consolidar quantidade, tipo de mineralização e minerais com concentração
24
+ COALESCE(
25
+ array_to_string(
26
+ ARRAY(
27
+ SELECT CONCAT(
28
+ COALESCE(mineralization->>'quantity', 'ND'), ' de ',
29
+ COALESCE(mineralization->>'type', 'ND'), ': ',
30
+ array_to_string(
31
+ ARRAY(
32
+ SELECT CONCAT(
33
+ mineral->>'name',
34
+ ' (', COALESCE(mineral->>'concentration', 'ND'), ')'
35
+ )
36
+ FROM jsonb_array_elements(CASE
37
+ WHEN jsonb_typeof(mineralization->'minerals') = 'array'
38
+ THEN mineralization->'minerals'
39
+ ELSE '[]'::jsonb
40
+ END) AS mineral
41
+ ), ', '
42
+ )
43
+ )
44
+ FROM jsonb_array_elements(CASE
45
+ WHEN jsonb_typeof(data->'responseData'->0->'response'->'mineralizations') = 'array'
46
+ THEN data->'responseData'->0->'response'->'mineralizations'
47
+ ELSE '[]'::jsonb
48
+ END) AS mineralization
49
+ ), '; '
50
+ ), 'Não especificado'
51
+ ) AS "Quantidades e concentrações",
52
+
53
+ -- Rochas presentes
54
+ COALESCE(data->'responseData'->0->'response'->'geological_context'->>'context_of_present_rocks', 'Não especificado') AS "Rochas presentes",
55
 
56
+ -- Contexto geológico
57
+ COALESCE(data->'responseData'->0->'response'->'geological_context'->>'geological_context_description', 'Não especificado') AS "Contexto geológico",
 
 
 
58
 
 
 
 
 
 
59
 
60
+ -- Rochas sedimentares
61
+ COALESCE(
62
+ CASE
63
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') = 'array' THEN
64
+ array_to_string(
65
+ ARRAY(
66
+ SELECT CONCAT(
67
+ sedimentares->>'name',
68
+ ' (Tipo: ', sedimentares->>'type',
69
+ ', Relações de contato: ', COALESCE(sedimentares->>'contact_relations', 'ND'), ')'
70
+ )
71
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') AS sedimentares
72
+ ), '; '
73
+ )
74
+ ELSE 'Não identificado'
75
+ END,
76
+ 'Não identificado'
77
+ ) AS "Rochas sedimentares",
78
+
79
+ -- Rochas metamórficas
80
+ COALESCE(
81
+ CASE
82
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') = 'array' THEN
83
+ array_to_string(
84
+ ARRAY(
85
+ SELECT CONCAT(
86
+ metam->>'name',
87
+ ' (Tipo: ', metam->>'type',
88
+ ', Relações de contato: ', COALESCE(metam->>'contact_relations', 'ND'), ')'
89
+ )
90
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') AS metam
91
+ ), '; '
92
+ )
93
+ ELSE 'Não identificado'
94
+ END,
95
+ 'Não identificado'
96
+ ) AS "Rochas metamórficas",
97
+
98
+ -- Rochas ígneas intrusivas
99
+ COALESCE(
100
+ CASE
101
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') = 'array' THEN
102
+ array_to_string(
103
+ ARRAY(
104
+ SELECT CONCAT(
105
+ igneas_i->>'name',
106
+ ' (Tipo: ', igneas_i->>'type',
107
+ ', Relações de contato: ', COALESCE(igneas_i->>'contact_relations', 'ND'), ')'
108
+ )
109
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') AS igneas_i
110
+ ), '; '
111
+ )
112
+ ELSE 'Não identificado'
113
+ END,
114
+ 'Não identificado'
115
+ ) AS "Rochas ígneas intrusivas",
116
+
117
+ -- Rochas ígneas extrusivas
118
+ COALESCE(
119
+ CASE
120
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') = 'array' THEN
121
+ array_to_string(
122
+ ARRAY(
123
+ SELECT CONCAT(
124
+ igneas_e->>'name',
125
+ ' (Tipo: ', igneas_e->>'type',
126
+ ', Relações de contato: ', COALESCE(igneas_e->>'contact_relations', 'ND'), ')'
127
+ )
128
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') AS igneas_e
129
+ ), '; '
130
+ )
131
+ ELSE 'Não identificado'
132
+ END,
133
+ 'Não identificado'
134
+ ) AS "Rochas ígneas extrusivas",
135
+
136
+ -- Rochas ígneas subvulcânicas
137
+ COALESCE(
138
+ CASE
139
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') = 'array' THEN
140
+ array_to_string(
141
+ ARRAY(
142
+ SELECT CONCAT(
143
+ igneas_sv->>'name',
144
+ ' (Tipo: ', igneas_sv->>'type',
145
+ ', Relações de contato: ', COALESCE(igneas_sv->>'contact_relations', 'ND'), ')'
146
+ )
147
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') AS igneas_sv
148
+ ), '; '
149
+ )
150
+ ELSE 'Não identificado'
151
+ END,
152
+ 'Não identificado'
153
+ ) AS "Rochas ígneas subvulcânicas",
154
 
155
  -- Rochas hospedeiras
156
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'name', '[null]'), 'Não identificado') AS "Nomes de rochas hospedeiras",
157
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'geologicalEnvironments', '[null]'), 'Não identificado') AS "Ambiente geológico",
158
+
159
+ COALESCE(NULLIF(array_to_string(ARRAY(SELECT jsonb_array_elements_text(data->'responseData'->2->'response'->'mineralFabric')), ', '), ''), 'Não identificado') AS "Textura de mineralização",
160
  COALESCE(NULLIF(array_to_string(ARRAY(
161
  SELECT jsonb_extract_path_text(associatedMinerals, 'name') || ' (' || 'Cor: ' || jsonb_extract_path_text(associatedMinerals, 'color') || ', Textura: ' || jsonb_extract_path_text(associatedMinerals, 'textures') || ', Nível de Alteração: ' || jsonb_extract_path_text(associatedMinerals, 'alterationLevel') || ')'
162
  FROM jsonb_array_elements(data->'responseData'->2->'response'->'associatedMinerals') AS associatedMinerals
163
  ), ', '), ''), 'Não identificado') AS "Minerais associados",
164
 
165
+ -- Tipos de processos alterações
166
+ COALESCE(
167
+ NULLIF(
168
+ array_to_string(
169
+ ARRAY(
170
+ SELECT alteration->>'alterationType'
171
+ FROM jsonb_array_elements(data->'responseData'->2->'response'->'alteration_processes') AS alteration
172
+ ), ', '
173
+ ), ''
174
+ ), 'Não identificado'
175
+ ) AS "Tipos de processos de alterações",
176
+
177
+ -- Minerais associados a alterações hidrotermais
178
+ COALESCE(
179
+ NULLIF(
180
+ array_to_string(
181
+ ARRAY(
182
+ SELECT jsonb_array_elements_text(alteration->'associatedMinerals')
183
+ FROM jsonb_array_elements(data->'responseData'->2->'response'->'alteration_processes') AS alteration
184
+ ), ', '
185
+ ), ''
186
+ ), 'Não identificado'
187
+ ) AS "Minerais associados a processos de alteração",
188
+
189
+ COALESCE(NULLIF(data->'responseData'->2->'response'->>'mineralizationSignatures', '[]'), 'Não especificado') AS "Assinaturas de mineralização 2",
190
+ COALESCE(NULLIF(data->'responseData'->2->'response'->>'chemical_pattern_analysis', '[]'), 'Não especificado') AS "Análise de padrão químico",
191
+
192
+
193
+ COALESCE(NULLIF(data->'responseData'->3->'response'->>'stable_isotopes', '[]'), 'Não especificado') AS "Isótopos Estáveis e Radiogênicos",
194
+ COALESCE(NULLIF(data->'responseData'->3->'response'->>'trace_elements_and_rare_earths', '[]'), 'Não especificado') AS "Elementos traço e terras raras",
195
+
196
+ -- COALESCE(NULLIF(data->'responseData'->3->'response'->>'structural_mapping', '[]'), 'Não especificado') AS "Geologia estrutural da região",
197
+ -- COALESCE(NULLIF(data->'responseData'->4->'response'->>'structureMineralizationRelation', '[]'), 'Não especificado') AS "Relação estrutura-mineralização",
198
+
199
+ COALESCE(NULLIF(data->'responseData'->4->'response'->>'geophysical_signatures', '[]'), 'Não especificado') AS "Assinaturas geofísicas",
200
+ COALESCE(NULLIF(data->'responseData'->4->'response'->>'mineralization_signatures', '[]'), 'Não especificado') AS "Assinaturas de mineralização",
201
+
202
+ COALESCE(NULLIF(data->'responseData'->5->'response'->>'additional_information', '[]'), 'Não especificado') AS "Informações adicionais de mineralização",
203
+ COALESCE(NULLIF(data->'responseData'->6->'response'->>'estimates', '[]'), 'Não especificado') AS "Estimativas de quantidade de mineralização",
204
 
205
+ COALESCE(NULLIF(data->'responseData'->7->'response'->>'potential', '[]'), 'Não especificado') AS "Potencial de descoberta",
206
+ COALESCE(NULLIF(data->'responseData'->8->'response'->>'strengths', '[]'), 'Não especificado') AS "Pontos fortes",
207
+ COALESCE(NULLIF(data->'responseData'->8->'response'->>'investment_risk', '[]'), 'Não especificado') AS "Risco de investimento",
208
+ COALESCE(NULLIF(data->'responseData'->8->'response'->>'economic_potential', '[]'), 'Não especificado') AS "Potencial econômico",
209
+ COALESCE(NULLIF(data->'responseData'->9->'response'->>'explanation', '[]'), 'Não especificado') AS "Explicação da favorabilidade",
210
+ COALESCE(NULLIF(data->'responseData'->9->'response'->>'favorability', '[]'), 'Não especificado') AS "Favorabilidade"
 
 
 
 
 
 
 
 
 
 
211
 
212
 
213
  FROM
214
  "Future Mining"."Extraction" e
215
+
 
216
  GROUP BY
217
  e."createdAt",
218
  e.id,
219
  e.name,
220
+ data->'responseData'->0->'response'->'mineralizations'->'type';
 
221
 
222