ADX(Azure Data Explorer, 이하 ADX)에서 SQL DB로 접근해 데이터를 SELECT/INSERT 검토.

 

ADX에서 SQLDB를 접근할때는 여러 방법이 가능할 것이다.

- ADX에서 제공하는 sql_request plugin 

- ADF(Azure Data Factory, 이하 ADF)를 이용한 ETL 수행

- Azure Function 을 이용해 직접 개발

 

우선 검토 대상으로 ADX의 sql_request plugin을 진행했다.

 

관련문서 : sql_request plugin - Azure Data Explorer | Microsoft Docs

 

간단히, ADX에서 쿼리할때 SQL로 하면 된다.

 

ADX의 sql_request plugin 검토

다음 절차로 진행한다.

- SQL Database 및 sample DB 배포

- ADX에서 쿼리 수행해 SELECT/INSERT 등 테스트

- 오류 확인

 

SQL Database 배포 및 sample database 생성

여러 방법이 있는데, sample database 만드는 문서 참조해 DB를 바로 만들었다.

Create a single database - Azure SQL Database | Microsoft Docs

 

DB 크기는 개발/테스트 목적이라 basic tier로 가장 작은 DB, 1G로 생성했다. 기본 월 6천원 정도.

Service tiers - DTU-based purchase model - Azure SQL Database | Microsoft Docs

 

SSMS와 같은 쿼리툴에서 데이터가 잘 조회되는 것을 확인했다. 로컬 SSMS에서 테스트할때 firewall 이슈가 있었다. 

IP firewall rules - Azure SQL Database and Azure Synapse Analytics | Microsoft Docs 내용 참조해 firewall 예외 추가 후 접속.

 

 

ADX에서 쿼리 수행해 SELECT/INSERT 등 테스트

ADX에서 수행한다. sql_request plugin - Azure Data Explorer | Microsoft Docs 내용을 참조해 진행했다.

evaluate sql_request(
  'Server=tcp:<서버주소>.database.windows.net,1433;'
    'Initial Catalog=<DB이름>;'
    h'User ID=<아이디>;'
    h'Password=<비번>;',
  'select top 10 * from SalesLT.Customer')

 

오류 발생

"error": {
        "code": "General_BadRequest",
        "message": "Request is invalid and cannot be executed.",
        "@type": "Kusto.Data.Exceptions.KustoBadRequestException",
        "@message": "SqlRequestPlugin.Open: Failed to open connection or ExecuteReader: Cannot open server '서버명' requested by the login. Client with IP address '20.196.222.XXX' is not allowed to access the server.  To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range.  It may take up to five minutes for this change to take effect.",

 

저 20.196.222.XXX는 아마 ADX Cluster의 IP 주소인 듯 한데, 정확한 range를 알지 못한다.

아래처럼, firewall 옵션에서 "Allow Azure services and resources to access this server"를 yes로 변경하고 재실행.

 

adx-sqldb01.png

결과가 잘 나온다.

 

adx-sqldb02.png

 

ADX에서 SQL로 INSERT 처리

evaluate sql_request(
  'Server=tcp:<DB서버>.database.windows.net,1433;'
    'Initial Catalog=<DB명>;'
    h'User ID=<사용자ID>;'
    h'Password=<사용자비번>;',
  'INSERT INTO Test(product_id, product_name) VALUES(20, \'proudct2\')')

 

에러 발생

evaluate sql_request(): the following error(s) occurred while evaluating the output schema: sql_request: SQL query result schema table lacks a DataType column.

sql_request plugin은 아마도 반드시 1개의 result set이 와야 하는데 오지 않아서 발생한 듯 하다.

 

마지막 라인을 아래 처럼 dummy return을 추가하면 결과는 나온다. 

...
'INSERT INTO Test(product_id, product_name) VALUES(20, \'proudct2\') select @@ROWCOUNT')

하지만, 제한이 많고 적절하지 않다.

 

우선 방화벽 부분과 인증 부분에서 몇가지 검토가 필요해 보인다.

또한, 소량의 데이터 조회에는 적절할 것으로 보이나, 대규모 데이터 조회나 INSERT 처리 등에는 적절하지 않아 보인다.

 

Result set 처리 제한

최초 검토는 ADX 테이블에서 조회해 SQLDB로 INSERT SELECT나 SELECT INTO를 생각했으나, parameter 방식으로 pass 시키는 처리라 result set을 넘길 수 없었다.

 

이후에 ADX의 sql_request plugin에 좀더 result set을 다루는 처리와 확장이 이루어지면 다시 검토 예정.

 

참고링크 : 

sql_request plugin - Azure Data Explorer | Microsoft Docs

IP firewall rules - Azure SQL Database and Azure Synapse Analytics | Microsoft Docs

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 38132
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 20674
338 Azure Data Explorer - SELECT INTO(CTAS) 또는 INSERT SELECT 쿼리 수행 코난(김대우) 2021.10.26 339
337 Azure Data Explorer에서 Trigger 기능 구현 - update policy file 코난(김대우) 2021.10.22 291
336 vscode에서 일관된 팀 단위 개발 환경 구성 - devcontainer file 코난(김대우) 2021.10.19 585
335 Bicep - Azure 클라우드 리소스 배포를 위한 언어 file 코난(김대우) 2021.10.19 149
334 Azure Data Explorer - Event Hub 스트리밍 ingest 중 컬럼추가 file 코난(김대우) 2021.10.18 150
333 SonarQube 리뷰 및 Azure DevOps 연결 file 코난(김대우) 2021.10.01 246
332 PySpark, koalas와 pandas dataframe file 코난(김대우) 2021.09.29 268
331 Apache Spark, pyspark 설치 후 jupyter notebook 실행 file 코난(김대우) 2021.09.29 395
330 Azure Data Explorer의 데이터를 Python Pandas Dataframe과 CSV로 변환 코난(김대우) 2021.09.28 180
329 Azure Blob Storage SAS token 생성 코난(김대우) 2021.09.17 228
328 Azure Data Factory를 이용해 ADX에서 SQL로 900만건의 데이터 전송 file 코난(김대우) 2021.09.16 279
» Azure Data Explorer에서 SQL서버 데이터베이스 테이블 조회/삽입 - sql_request plugin file 코난(김대우) 2021.09.16 171
326 Azure Data Explorer에 대량 CSV 파일 ingest 코난(김대우) 2021.09.15 170
325 Azure Event Hubs의 데이터를 Azure Data Explorer로 전송 file 코난(김대우) 2021.09.15 223
324 Azure Event Hubs로 kafka message 전송 처리 file 코난(김대우) 2021.09.15 271
323 Service Principal과 Azure 리소스 접근/사용을 위한 인증 방법 3+1가지 file 코난(김대우) 2020.12.26 639
322 Azure storage 관리 도구 - storage explorer 설치와 사용 방법 코난(김대우) 2020.12.25 424
321 Azure cli - command line interface 명령줄 인터페이스 도구를 쓰는 이유와 방법 코난(김대우) 2020.12.25 363
320 클라우드 오픈소스 개발환경 - WSL [1] file 코난(김대우) 2020.12.20 1249
319 Cloud RoadShow 세션 발표 자료 코난(김대우) 2016.05.04 11432





XE Login