postgresql_request 플러그 인
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
플러그 인은 postgresql_request
SQL 쿼리를 Azure PostgreSQL 서버 네트워크 엔드포인트로 보내고 결과의 첫 번째 행 집합을 반환합니다. 쿼리는 둘 이상의 행 집합을 반환할 수 있지만 Kusto 쿼리의 나머지 부분에서는 첫 번째 행 집합만 사용할 수 있습니다.
플러그 인은 연산자를 사용하여 호출됩니다 evaluate
.
Important
플러그 인은 postgresql_request
기본적으로 사용하지 않도록 설정됩니다.
플러그 인을 사용하도록 설정하려면 명령을 실행합니다..enable plugin postgresql_request
사용하도록 설정된 플러그 인을 확인하려면 관리 명령을 사용합니다.show plugin
.
구문
evaluate
postgresql_request
(
ConnectionString ,
SqlQuery [,
SqlParameters] )
[:
OutputSchema]
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
ConnectionString | string |
✔️ | PostgreSQL 서버 네트워크 엔드포인트를 가리키는 연결 문자열. 인증 및 네트워크 엔드포인트를 지정하는 방법을 참조하세요. |
SqlQuery | string |
✔️ | SQL 엔드포인트에 대해 실행할 쿼리입니다. 하나 이상의 행 집합을 반환해야 합니다. 쿼리의 나머지 부분에는 첫 번째 집합만 사용할 수 있습니다. |
SqlParameters | dynamic |
쿼리와 함께 매개 변수로 전달할 키-값 쌍을 보유하는 속성 모음 개체입니다. | |
OutputSchema | 플러그 인 출력의 예상 열에 postgresql_request 대한 이름 및 형식입니다.구문: ( ColumnName : ColumnType [, ...]) |
참고 항목
- 클러스터 간 쿼리와 같이 플러그 인 없이는 작동하지 않을 수 있는 시나리오에서 플러그 인을 사용할 수 있으므로 OutputSchema를 지정하는 것이 좋습니다. OutputSchema는 여러 쿼리 최적화를 사용하도록 설정할 수도 있습니다.
- SQL 네트워크 엔드포인트에서 반환된 첫 번째 행 집합의 런타임 스키마가 OutputSchema 스키마와 일치하지 않으면 오류가 발생합니다.
인증 및 권한 부여
PostgreSQL 서버 네트워크 엔드포인트에 권한을 부여하려면 연결 문자열 권한 부여 정보를 지정해야 합니다. 지원되는 권한 부여 방법은 사용자 이름 및 암호를 통해서입니다.
설명선 정책 설정
플러그 인은 PostgreSQL 데이터베이스를 설명합니다. 클러스터의 설명선 정책이 대상 PostgreSqlDbUri에 대한 형식 postgresql
호출을 사용하도록 설정해야 합니다.
다음 예제에서는 PostgreSQL 데이터베이스에 대한 설명선 정책을 정의하는 방법을 보여 줍니다. 설명선 정책을 특정 엔드포인트(my_endpoint1
, my_endpoint2
)로 제한하는 것이 좋습니다.
[
{
"CalloutType": "postgresql",
"CalloutUriRegex": "my_endpoint1\\.postgres\\.database\\.azure\\.com",
"CanCall": true
},
{
"CalloutType": "postgresql",
"CalloutUriRegex": "my_endpoint2\\.postgres\\.database\\.azure\\.com",
"CanCall": true
}
]
다음 예제에서는 CalloutType에 대한 postgresql
명령을 보여줍니다.alter callout policy
.
.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'
사용자 이름 및 암호 인증
플러그 인은 postgresql_request
PostgreSQL 서버 엔드포인트에 대한 사용자 이름 및 암호 인증만 지원하며 Microsoft Entra 인증과 통합되지 않습니다.
사용자 이름 및 암호는 다음 매개 변수를 사용하여 연결 문자열의 일부로 제공됩니다.
User ID=...; Password=...;
Warning
기밀 또는 보호된 정보는 kusto 추적에서 생략되도록 연결 문자열 및 쿼리에서 난독 처리해야 합니다. 자세한 내용은 난독 분석된 문자열 리터럴을 참조 하세요.
암호화 및 서버 유효성 검사
보안을 SslMode
위해 PostgreSQL 서버 네트워크 엔드포인트에 Required
연결할 때 무조건 설정됩니다. 따라서 서버를 유효한 SSL/TLS 서버 인증서로 구성해야 합니다.
네트워크 엔드포인트 지정
PostgreSQL 네트워크 엔드포인트를 연결 문자열 일부로 지정합니다.
구문:
Host
=
FQDN [Port
=
포트]
여기서
- FQDN 은 엔드포인트의 정규화된 도메인 이름입니다.
- 포트 는 엔드포인트의 TCP 포트입니다.
예제
Azure PostgreSQL DB에 대한 SQL 쿼리
다음 예제에서는 Azure PostgreSQL 데이터베이스에 SQL 쿼리를 보냅니다. 모든 레코드를 검색 public."Table"
한 다음 결과를 처리합니다.
참고 항목
이 예제는 이러한 방식으로 데이터를 필터링하거나 프로젝트하는 권장 사항으로 간주해서는 안 됩니다. 가능한 가장 작은 데이터 세트를 반환하려면 SQL 쿼리를 생성해야 합니다.
evaluate postgresql_request(
'Host=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select * from public."Table"') : (Id: int, Name: string)
| where Id > 0
| project Name
수정된 Azure PostgreSQL 데이터베이스에 대한 SQL 쿼리
다음 예제에서는 다른 datetime
열을 추가하는 동안 모든 레코드public."Table"
를 검색하는 Azure PostgreSQL 데이터베이스에 SQL 쿼리를 보낸 다음 결과를 처리합니다.
SQL 쿼리에 사용할 SQL 매개 변수(@param0
)를 지정합니다.
evaluate postgresql_request(
'Server=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select *, @param0 as dt from public."Table"',
dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id: int, Name: string, dt: datetime)
| where Id > 0
| project Name
쿼리 정의 출력 스키마 없이 Azure PostgreSQL 데이터베이스에 대한 SQL 쿼리
다음 예제에서는 출력 스키마 없이 Azure PostgreSQL 데이터베이스에 SQL 쿼리를 보냅니다. 스키마를 알 수 없는 경우 쿼리 성능에 영향을 미칠 수 있으므로 권장되지 않습니다.
evaluate postgresql_request(
'Host=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select * from public."Table"')
| where Id > 0
| project Name