Spaces:
Running
Running
feat: nova query do future mining para extrações Llama Index
Browse files
query.sql
CHANGED
@@ -1,107 +1,222 @@
|
|
1 |
SELECT
|
2 |
-
|
3 |
-
|
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 |
-
|
22 |
-
|
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 |
-
|
33 |
-
COALESCE(
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
-
--
|
50 |
-
COALESCE(
|
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 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
-
|
79 |
-
COALESCE(NULLIF(
|
80 |
-
COALESCE(NULLIF(
|
81 |
-
|
82 |
-
COALESCE(NULLIF(data->'responseData'->
|
83 |
-
COALESCE(NULLIF(data->'responseData'->
|
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 |
-
|
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 |
-
|
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 |
|