전체 글 1185

[Azure] AI Search - Document 다루기

개요2024.12.09-[Azure] AI Search - Index 다루기에서 Azure Python SDK를 사용해 AI Search 서비스의 Index를 다루는 방법을 정리했다. 이번에는 Index에서 데이터에 해당하는 Document를 다루는 방법을 정리한다. 클라이언트 생성Index에 Document를 저장하거나 삭제하는 등의 작업을 수행하기 위해서는 SearchClient가 필요하다.(인덱스를 다루기 때문에 SearchIndexClient랑 헷갈리는데, SearchClient이다.)from azure.core.credentials import AzureKeyCredentialfrom azure.search.documents import SearchClientservice_endpoint = o..

Azure 2024.12.26

[Azure] Functions - Timeout value of 00:30:00 exceeded by function 'Functions.http_app_func'

현상2024.11.18-[Azure] 로컬 환경에서 Function 개발하기에서 정리했던 것처럼 로컬 환경에서 Azure Functions을 개발하면서 테스트를 진행하던 중 아래와 같은 에러가 발생했다.Timeout value of 00:30:00 exceeded by function 'Functions.http_app_func'타임 아웃이 발생해서 동작이 중단된 것 같은데, 일단 타임 아웃을 조정하는 방식으로 현상을 해결해보려고 한다.  host.jsonhost.json은 함수에 영향을 주는 구성 파일이다. https://learn.microsoft.com/ko-kr/azure/azure-functions/functions-host-json에서 예시 파일의 내용을 확인할 수 있다.{ "version"..

Azure 2024.12.24

[Azure] Functions - Portal에서 만들기

개요이전에 2024.11.15-[Azure] Functions 이란이라는 글에서 Azure Functions 개념을 살펴보았다. 이번에는 Azure Portal에서 Function을 만들어보자. 2024.11.18-[Azure] 로컬 환경에서 Function 개발하기에서와 동일하게 python 런타임, HTTPTrigger로 만들어보려고 한다.   Function App 생성Functions을 실행하기 위해서는 호스팅을 위한 App이 있어야 한다. Function App은 Function을 논리적으로 그룹화하여 리소스를 관리하고 배포, 크기 조정 등을 가능하게 한다.  1. Azure Portal > 리소스 만들기 접근 2. 리소스 만들기 > 함수 앱 > 만들기 클릭 3. 호스팅 옵션 선택적절한 호스팅 ..

Azure 2024.12.23

[Azure] AI Search - SynonymMap 적용

개요2024.12.02-[Azure] AI Search - Synonym map, 2024.12.03-[Azure] AI Search - Synonym map 생성/조회/삭제에서 SynonymMap의 개념과 python으로 다루는 방법을 간단하게 알아보았다. 이번 글에선 SynonymMap을 실제로 인덱스에 적용하는 방법을 정리해 둔다.   테스트 데이터먼저 아래와 같은 데이터가 있다고 하자.이 데이터를 저장하기 위해서 아래와 같은 필드를 가진 스키마로 인덱스를 생성했다.{ "name": "testIndex", "fields": [ { "name": "docid", "type": "Edm.String", "key": true, "retrievable": tru..

Azure 2024.12.20

[Azure] AI Search - Synonym map 생성/조회/삭제

개요2024.12.02-[Azure] AI Search - Synonym map에서 Azure AI Search의 기능 중 하나인 Synonym map에 대해 알아보았다. 이번 글에서는 Python 상에서 Synonym map을 생성하고 조회하고 삭제하는 방법을 정리해두려고 한다. + 필드에 적용하는 방법은 다른 글로 적어두겠다.  서비스 인증Azure Python SDK로 AI Search에 대한 서비스 인증을 하기 위해서는 먼저 AI Search 리소스가 생성되어있어야 한다. 현재 직접 리소스를 생성할 수 있는 환경이 되어 있지 않아 이 글에서는 이미 생성되어 있다고 가정하겠다.서비스 생성 자체는 https://learn.microsoft.com/en-us/azure/search/search-crea..

Azure 2024.12.19

[Azure] AI Search - Synonym map

개요최근 Azure의 AI Search 서비스를 다루게 되었는데, 동의어 처리에 대한 요구사항이 존재한다. 관련해서 AI Search의 동의어 처리를 제공하는 Synonym map에 대해 알아보자.  Synonym mapSynonym map은 여러 인덱스가 공유할 수 있는 최상위 리소스이며, 문자열 필드에 적용된다. 검색 서비스에 동등한 용어를 연관시켜 쿼리 범위를 확장할 수 있기 때문에 기술 전문 용어, 속어 등이 포함되는 경우 활용할 수 있다.  규칙Apache Solr이라는 오픈소스 사양을 따르며 solr은 동등성, 그리고 명시적 매핑이라는 두 가지 종류의 규칙을 지원한다.각 규칙은 Synonym map 당 5,000개(무료 서비스 기준) 또는 20,000개의 규칙을 정의할 수 있고, 각 규칙은 최..

Azure 2024.12.18

[Azure] AI Search - Index 다루기

개요2024.11.01-[Azure] AI Search - 인덱스에서 인덱스의 개념을 알아보았었다. 이번 글에서는 Python Azure SDK를 사용해 인덱스를 생성하고 조회하는 등의 작업을 수행해보려고 한다. AI Search 서비스 리소스는 이미 생성되어 있다고 가정한다.  Index 생성Index는 SearchIndex라는 객체를 생성한 뒤, SearchIndexClient.create_or_update_index 메서드를 호출하여 생성할 수 있다. 먼저 아래 예시 코드와 같이 Index 스키마를 구성한다. from azure.core.credentials import AzureKeyCredentialfrom azure.search.documents.indexes import SearchIndex..

Azure 2024.12.17

[FastAPI] APIRouter - 모듈 분리

개요FastAPI 공식 문서를 보면 하나의 파일에 경로를 구성하게끔 되어있는데, 사실 애플리케이션을 개발할 때 하나의 파일에 모든 내용을 넣을 수 있는 경우는 거의 없다. FastAPI는 모듈 분리를 할 수 있도록 APIRouter라는 기능을 제공하는데, 이번 글에서는 관련 내용을 정리해 둔다.  APIRouter 정의APIRouter는 경로를 그룹화하는 데 사용하며, 애플리케이션을 구조화할 수 있게 하는 역할을 한다. 일종의 작은 FastAPI 객체라고 생각해도 된다.사용할 때는 APIRouter 클래스를 임포트 한 뒤, APIRouter 객체를 생성하고, FastAPI 객체에 대한 경로를 데코레이터로 추가했던 것과 동일한 방식으로 APIRouter 객체에 대한 경로를 데코레이터로 추가한다. 아래는 예..

Python 2024.12.16

[Airflow] Dag Import Error 확인하기

개요Airflow를 사용하다 보면 Web UI에서 다음과 같은 Import 에러가 발생하는 모습을 확인할 수 있다.Import Errors가 발생하면 Dag 활성화 자체가 되지 않기 때문에 주기적으로 동작 확인이 필요한 경우에는 별도로 모니터링이 필요해 보였다. 관련하여 알람 등을 구성하기 위해 프로그래밍적인 방법으로 확인할 수 있는 방법이 있는지 확인해본다.   import_error 테이블잠깐 Airflow Meta DB 스키마를 확인해 봤더니 바로 import_error 테이블이 존재하는 모습을 확인할 수 있다.-- airflow.import_error definitionCREATE TABLE `import_error` ( `id` int NOT NULL AUTO_INCREMENT, `times..

Apache Airflow 2024.12.13

[PyMySQL] Decimal 데이터를 python float으로 변환

개요Python에서 PyMySQL을 사용해 데이터를 조회하다 보면 다음과 같이 Decimal이라는 객체로 값을 반환받는 경우가 있다.이런 데이터를 Python float이나 double로 취급하고 싶다. 방법을 적어둔다.   Decimal데이터베이스에서 Decimal은 고정 소수점 타입으로, 실수의 값을 정확하게 표현하기 위해 사용한다. 고정 소수점 방식은 소수부의 자릿수를 고정하여 표현한다. DECIMAL(M,D)M은 소수부와 정수부를 포함한 전체 자리수를자릿수를 의미하고, D가 소수부의 자릿수를 나타낸다.  converters.conversionsPyMySQL은 conversion dictionary라는 개념으로 데이터베이스의 데이터 타입을 Python의 데이터 타입으로 변환하는 규칙을 사용하고 있다..

Python 2024.12.12