@@ -140,6 +140,12 @@ def get_info_from_db(max_workers: int = 8) -> List[Document]:
140140
141141 def process_table_info (item : tuple [str , str ]) -> str :
142142 table_name , table_description = item
143+ urn = urn_table_mapping .get (table_name , "" )
144+
145+ # fetcher 인스턴스 생성
146+ local_fetcher = _get_fetcher ()
147+
148+ # 컬럼 정보 가져오기
143149 column_info = _get_column_info (
144150 table_name , urn_table_mapping , max_workers = max_workers
145151 )
@@ -149,7 +155,80 @@ def process_table_info(item: tuple[str, str]) -> str:
149155 for col in column_info
150156 ]
151157 )
152- return f"{ table_name } : { table_description } \n Columns:\n { column_info_str } "
158+
159+ # 쿼리 및 용어집 정보 가져오기
160+ queries_result = local_fetcher .get_queries_by_urn (urn ) if urn else {}
161+ glossary_terms_result = (
162+ local_fetcher .get_glossary_terms_by_urn (urn ) if urn else {}
163+ )
164+
165+ # GraphQL 응답에서 실제 쿼리 리스트 추출
166+ queries = []
167+ if (
168+ queries_result
169+ and "data" in queries_result
170+ and "listQueries" in queries_result ["data" ]
171+ and "queries" in queries_result ["data" ]["listQueries" ]
172+ ):
173+ queries = queries_result ["data" ]["listQueries" ]["queries" ]
174+
175+ # GraphQL 응답에서 실제 glossary terms 추출
176+ glossary_terms = []
177+ if (
178+ glossary_terms_result
179+ and "data" in glossary_terms_result
180+ and "dataset" in glossary_terms_result ["data" ]
181+ and "glossaryTerms" in glossary_terms_result ["data" ]["dataset" ]
182+ and glossary_terms_result ["data" ]["dataset" ]["glossaryTerms" ] is not None
183+ and "terms" in glossary_terms_result ["data" ]["dataset" ]["glossaryTerms" ]
184+ ):
185+ terms_data = glossary_terms_result ["data" ]["dataset" ]["glossaryTerms" ][
186+ "terms"
187+ ]
188+ for term_item in terms_data :
189+ if "term" in term_item and "properties" in term_item ["term" ]:
190+ props = term_item ["term" ]["properties" ]
191+ name = props .get ("name" , "" )
192+ description = props .get ("description" , "" )
193+ definition = props .get ("definition" , "" )
194+ glossary_terms .append (
195+ {
196+ "name" : name ,
197+ "description" : description ,
198+ "definition" : definition ,
199+ }
200+ )
201+
202+ # 쿼리 정보를 name, description, statement.value만 추출하여 포맷
203+ if queries :
204+ formatted_queries = []
205+ for q in queries [:3 ]: # 최대 3개 쿼리만
206+ if isinstance (q , dict ) and "properties" in q :
207+ props = q ["properties" ]
208+ name = props .get ("name" , "No name" )
209+ description = props .get ("description" , "No description" )
210+ statement_value = props .get ("statement" , {}).get (
211+ "value" , "No query statement"
212+ )
213+ formatted_query = f"Name: { name } \n Description: { description } \n Query: { statement_value } "
214+ formatted_queries .append (formatted_query )
215+ queries_str = (
216+ "\n ---\n " .join (formatted_queries ) if formatted_queries else "No queries"
217+ )
218+ else :
219+ queries_str = "No queries"
220+ terms_str = (
221+ "\n " .join (
222+ [
223+ f"Term: { term ['name' ]} \n Description: { term ['description' ]} \n Definition: { term ['definition' ]} "
224+ for term in glossary_terms
225+ ]
226+ )
227+ if glossary_terms
228+ else "No terms"
229+ )
230+
231+ return f"{ table_name } : { table_description } \n Columns:\n { column_info_str } \n Queries:\n { queries_str } \n Terms:\n { terms_str } "
153232
154233 table_info_str_list = parallel_process (
155234 table_info .items (),
0 commit comments