중요합니다
이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.
Microsoft SharePoint에서 델타 테이블로 구조화되고 반구조화되고 구조화되지 않은 파일을 수집할 수 있습니다. SharePoint 커넥터는 자동 로더를 비롯한 일괄 처리 및 스트리밍 API를 사용하여 SharePoint 파일의 증분 수집을 지원하며spark.read, COPY INTO 모두 Unity 카탈로그 거버넌스를 사용합니다.
SharePoint 커넥터 선택
Lakeflow Connect는 두 개의 보완 SharePoint 커넥터를 제공합니다. 둘 다 SharePoint의 데이터에 액세스하지만 고유한 목표를 지원합니다.
| 고려 사항 | 관리되는 SharePoint 커넥터 | 표준 SharePoint 커넥터 |
|---|---|---|
| 관리 및 사용자 지정 | 완전 관리형 커넥터입니다. 델타 테이블에 데이터를 수집하고 원본과 동기화된 상태로 유지하는 엔터프라이즈 애플리케이션에 대한 간단하고 낮은 유지 관리 커넥터입니다. Lakeflow Connect에서 관리되는 커넥터를 참조하세요. |
SQL, PySpark 또는 Lakeflow Spark 선언적 파이프라인을 사용하여, read_files, spark.read, COPY INTO, 자동 로더와 같은 일괄 처리 및 스트리밍 API를 통해 사용자 지정 수집 파이프라인을 빌드합니다.수집 과정에서 복잡한 변환을 수행할 수 있는 유연성을 제공함과 동시에, 파이프라인을 관리하고 유지하는 데 있어 더 많은 책임을 부여합니다. |
| 출력 형식 | 균일한 이진 콘텐츠 테이블입니다. 에서 파일 메타데이터와 함께 각 파일을 이진 형식(행당 하나의 파일)으로 수집합니다. 추가 열 |
구조적 델타 테이블입니다. 구조화된 파일(예: CSV 및 Excel)을 델타 테이블로 수집합니다. 데이터를 수집하는 데에도 사용할 수 있습니다. 이진 형식의 구조화되지 않은 파일입니다. |
| 세분성, 필터링 및 선택 | 현재 하위 폴더 또는 파일 수준 선택 항목이 없습니다. 패턴 기반 필터링이 없습니다. 지정된 SharePoint 문서 라이브러리의 모든 파일을 수집합니다. |
세분화되고 사용자 지정됩니다. 문서 라이브러리, 하위 폴더 또는 개별 파일에서 수집하기 위한 URL 기반 선택입니다. 옵션 pathGlobFilter을 사용하여 패턴 기반 필터링도 지원합니다. |
주요 기능
표준 SharePoint 커넥터는 다음을 제공합니다.
- 구조적, 반구조적 및 구조화되지 않은 파일의 수집
- 세분된 인제스트: 특정 사이트, 하위 사이트, 문서 라이브러리, 폴더 또는 단일 파일 인제스트
-
spark.read를 사용한 일괄 처리 및 스트리밍 수집, Auto Loader 및COPY INTO - CSV 및 Excel과 같은 구조적 및 반구조적 형식에 대한 자동 스키마 유추 및 진화
- Unity 카탈로그 연결을 사용하여 자격 증명 스토리지 보호
-
pathGlobFilter를 사용한 패턴 매칭으로 파일 선택
요구 사항
SharePoint에서 파일을 수집하려면 다음이 있어야 합니다.
- Unity 카탈로그를 사용하도록 설정된 작업 영역입니다.
-
CREATE CONNECTIONSharePoint 연결을 만들거나USE CONNECTION기존 연결을 사용할 수 있는 권한 - Databricks 런타임 버전 17.3 LTS 이상을 사용하는 컴퓨팅입니다.
- OAuth 인증은
Sites.Read.All또는Sites.Selected권한 범위로 설정됩니다. - SharePoint 베타 기능은 미리 보기 페이지에서 사용할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.
- 선택 사항: Excel 파일을 구문 분석하기 위해 Excel 베타 기능을 사용하도록 설정합니다. Excel 파일 읽기를 참조하세요.
연결 만들기
SharePoint 자격 증명을 저장할 Unity 카탈로그 연결을 만듭니다. 연결 설정 프로세스는 표준 및 관리되는 SharePoint 커넥터 간에 공유됩니다.
OAuth 인증 옵션을 비롯한 전체 연결 설정 지침은 SharePoint 수집 설정 개요를 참조하세요.
SharePoint에서 파일 읽기
Spark를 사용하여 SharePoint에서 파일을 읽으려면 데이터 원본 옵션을 사용하여 databricks.connection 이전 단계에서 만든 연결을 지정하고 액세스하려는 SharePoint 리소스의 URL을 제공합니다. 이 URL은 특정 파일, 폴더, 문서 라이브러리(드라이브) 또는 전체 사이트를 참조할 수 있습니다. 예를 들면 다음과 같습니다.
https://mytenant.sharepoint.com/sites/test-site/https://mytenant.sharepoint.com/sites/test-site/test-subsitehttps://mytenant.sharepoint.com/sites/test-site/test-drivehttps://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspxhttps://mytenant.sharepoint.com/sites/test-site/test-drive/test-folderhttps://mytenant.sharepoint.com/sites/test-site/test-drive/test-folder/test.csvhttps://mytenant.sharepoint.com/sites/test-site/another-subsite/another-drive/test.csv
예시
표준 SharePoint 커넥터를 사용하여 파일을 읽는 몇 가지 방법이 있습니다.
자동 로더를 사용하여 SharePoint 파일 스트리밍
자동 로더는 SharePoint에서 구조화된 파일을 증분 방식으로 수집하는 가장 효율적인 방법을 제공합니다. 새 파일을 자동으로 검색하고 도착하는 동안 처리합니다. 또한 자동 스키마 유추 및 진화를 통해 CSV 및 JSON과 같은 구조적 및 반구조화된 파일을 수집할 수도 있습니다. 자동 로더 사용에 대한 자세한 내용은 일반 데이터 로드 패턴을 참조하세요.
# Incrementally ingest new PDF files
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("cloudFiles.schemaLocation", <path to a schema location>)
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
)
# Incrementally ingest CSV files with automatic schema inference and evolution
df = (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("inferColumnTypes", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs")
)
Spark 일괄 읽기를 사용하여 SharePoint 파일 읽기
다음 예제에서는 파이썬에서 사용되는 spark.read 함수를 사용하여 SharePoint 파일을 수집하는 방법을 보여줍니다.
# Read unstructured data as binary files
df = (spark.read
.format("binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("recursiveFileLookup", True)
.option("pathGlobFilter", "*.pdf") # optional. Example: only ingest PDFs
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents"))
# Read a batch of CSV files, infer the schema, and load the data into a DataFrame
df = (spark.read
.format("csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("recursiveFileLookup", True)
.option("inferSchema", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs"))
# Read a specific Excel file from SharePoint, infer the schema, and load the data into a DataFrame
df = (spark.read
.format("excel")
.option("databricks.connection", "my_sharepoint_conn")
.option("headerRows", 1) # optional
.option("dataAddress", "'Sheet1'!A1:M20") # optional
.load("https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx"))
Spark SQL을 사용하여 SharePoint 파일 읽기
다음 예제에서는 테이블 반환 함수를 사용하여 read_files SQL에서 SharePoint 파일을 처리하는 방법을 보여줍니다.
read_files 사용에 대한 자세한 내용은 테이블 값 함수read_files를 참조하세요.
-- Read pdf files
CREATE TABLE my_table AS
SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
`databricks.connection` => "my_sharepoint_conn",
format => "binaryFile",
pathGlobFilter => "*.pdf", -- optional. Example: only ingest PDFs
schemaEvolutionMode => "none"
);
-- Read a specific Excel sheet and range
CREATE TABLE my_sheet_table AS
SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx",
`databricks.connection` => "my_sharepoint_conn",
format => "excel",
headerRows => 1, -- optional
dataAddress => "'Sheet1'!A2:D10", -- optional
schemaEvolutionMode => "none"
);
증분 수집 COPY INTO
COPY INTO 는 델타 테이블에 파일을 증분으로 멱등하게 로드합니다.
COPY INTO 사용 방법에 대한 자세한 내용은 COPY INTO을(를) 사용한 일반적인 데이터 로드 패턴을 참조하세요.
CREATE TABLE IF NOT EXISTS sharepoint_pdf_table;
CREATE TABLE IF NOT EXISTS sharepoint_csv_table;
CREATE TABLE IF NOT EXISTS sharepoint_excel_table;
# Incrementally ingest new PDF files
COPY INTO sharepoint_pdf_table
FROM "https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents"
FILEFORMAT = BINARYFILE
PATTERN = '*.pdf'
FORMAT_OPTIONS ('databricks.connection' = 'my_sharepoint_conn')
COPY_OPTIONS ('mergeSchema' = 'true');
# Incrementally ingest CSV files with automatic schema inference and evolution
COPY INTO sharepoint_csv_table
FROM "https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs"
FILEFORMAT = CSV
PATTERN = '*.csv'
FORMAT_OPTIONS ('databricks.connection' = 'my_sharepoint_conn', 'header' = 'true', 'inferSchema' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
# Ingest a single Excel file
COPY INTO sharepoint_excel_table
FROM "https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx"
FILEFORMAT = EXCEL
FORMAT_OPTIONS ('databricks.connection' = 'my_sharepoint_conn', 'headerRows' = '1')
COPY_OPTIONS ('mergeSchema' = 'true');
Lakeflow Spark 선언적 파이프라인에서 SharePoint 파일 수집
비고
SharePoint 커넥터에는 Databricks Runtime 17.3 이상이 필요합니다. 커넥터를 사용하려면 파이프라인 설정에서 설정합니다 "CHANNEL" = "PREVIEW" . 미리 보기에 대한 자세한 내용은 파이프라인 속성 참조를 참조하세요.
다음 예제에서는 Lakeflow Spark 선언적 파이프라인에서 자동 로더를 사용하여 SharePoint 파일을 읽는 방법을 보여 줍니다.
파이썬
from pyspark import pipelines as dp
# Incrementally ingest new PDF files
@dp.table
def sharepoint_pdf_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "binaryFile")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.pdf")
.load("https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents")
)
# Incrementally ingest CSV files with automatic schema inference and evolution
@dp.table
def sharepoint_csv_table():
return (spark.readStream.format("cloudFiles")
.option("cloudFiles.format", "csv")
.option("databricks.connection", "my_sharepoint_conn")
.option("pathGlobFilter", "*.csv")
.option("inferColumnTypes", True)
.option("header", True)
.load("https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs")
)
# Read a specific Excel file from SharePoint in a materialized view
@dp.table
def sharepoint_excel_table():
return (spark.read.format("excel")
.option("databricks.connection", "my_sharepoint_conn")
.option("headerRows", 1) # optional
.option("inferColumnTypes", True) # optional
.option("dataAddress", "'Sheet1'!A1:M20") # optional
.load("https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx")
SQL
-- Incrementally ingest new PDF files
CREATE OR REFRESH STREAMING TABLE sharepoint_pdf_table
AS SELECT * FROM STREAM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
format => "binaryFile",
`databricks.connection` => "my_sharepoint_conn",
pathGlobFilter => "*.pdf");
-- Incrementally ingest CSV files with automatic schema inference and evolution
CREATE OR REFRESH STREAMING TABLE sharepoint_csv_table
AS SELECT * FROM STREAM read_files(
"https://mytenant.sharepoint.com/sites/Engineering/Data/IoT_Logs",
format => "csv",
`databricks.connection` => "my_sharepoint_conn",
pathGlobFilter => "*.csv",
"header", "true");
-- Read a specific Excel file from SharePoint in a materialized view
CREATE OR REFRESH MATERIALIZED VIEW sharepoint_excel_table
AS SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Finance/Shared%20Documents/Monthly/Report-Oct.xlsx",
`databricks.connection` => "my_sharepoint_conn",
format => "excel",
headerRows => 1, -- optional
dataAddress => "'Sheet1'!A2:D10", -- optional
`cloudFiles.schemaEvolutionMode` => "none"
);
구조화되지 않은 파일 구문 분석
표준 SharePoint 커넥터 binaryFile 형식을 사용하여 SharePoint에서 구조화되지 않은 파일(예: PDF, Word 문서 또는 PowerPoint 파일)을 수집하는 경우 파일 콘텐츠는 원시 이진 데이터로 저장됩니다. RAG, 검색, 분류 및 문서 이해와 같은 AI 작업에 필요한 파일을 준비하려면 이진 콘텐츠를 구조화된 쿼리 가능 출력 ai_parse_document으로 변환할 수 있습니다.
다음 예제에서는 이름이 documents브론즈 델타 테이블에 저장된 구조화되지 않은 문서를 구문 분석하고 구문 분석된 내용이 있는 새 열을 추가하는 방법을 보여 줍니다.
CREATE TABLE documents AS
SELECT * FROM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
`databricks.connection` => "my_sharepoint_conn",
format => "binaryFile",
pathGlobFilter => "*.pdf,*.docx",
schemaEvolutionMode => "none"
);
SELECT *, ai_parse_document(content) AS parsed_content
FROM documents;
열에는 parsed_content 다운스트림 AI 파이프라인에 직접 사용할 수 있는 추출된 텍스트, 테이블, 레이아웃 정보 및 메타데이터가 포함됩니다.
Lakeflow Spark 선언적 파이프라인을 사용한 증분 구문 분석
Lakeflow Spark 선언적 파이프라인 내에서 ai_parse_document을(를) 사용하여 증분 구문 분석을 활성화할 수도 있습니다. SharePoint에서 새 파일이 유입되면, 파이프라인이 업데이트될 때 자동으로 구문 분석됩니다.
예를 들어 새로 수집한 문서를 지속적으로 구문 분석하는 구체화된 뷰를 정의할 수 있습니다.
CREATE OR REFRESH STREAMING TABLE sharepoint_documents_table
AS SELECT * FROM STREAM read_files(
"https://mytenant.sharepoint.com/sites/Marketing/Shared%20Documents",
format => "binaryFile",
`databricks.connection` => "my_sharepoint_conn",
pathGlobFilter => "*.pdf,*.docx");
CREATE OR REFRESH MATERIALIZED VIEW documents_parsed
AS
SELECT *, ai_parse_document(content) AS parsed_content
FROM sharepoint_documents_table;
이 방법은 다음을 보장합니다.
- 새로 수집된 SharePoint 파일은 머티리얼라이즈드 뷰가 새로 고쳐질 때마다 자동으로 구문 분석됩니다.
- 구문 분석된 출력은 들어오는 데이터와 동기화 상태를 유지합니다.
- 다운스트림 AI 파이프라인은 문서의 최신 표현에서 항상 작동합니다.
자세한 정보: 지원되는 형식 및 고급 옵션은 ai_parse_document 참조하세요.
제한점
표준 SharePoint 커넥터에는 다음과 같은 제한 사항이 있습니다.
- 다중 사이트 수집 없음: 동일한 쿼리를 사용하여 여러 사이트를 수집할 수 없습니다. 두 사이트에서 수집하려면 두 개의 별도 쿼리를 작성해야 합니다.
-
필터링: 이 옵션을 사용하여
pathGlobFilter이름으로 파일을 필터링할 수 있습니다. 폴더 경로 기반 필터링은 지원되지 않습니다. - 지원되지 않는 형식: SharePoint 목록 및 .aspx 사이트 페이지는 지원되지 않습니다. 문서 라이브러리의 파일만 지원됩니다.
- SharePoint 서버에 다시 쓰는 것은 지원되지 않습니다.
- 자동 로더
cleanSource(수집 후 원본에서 파일 삭제 또는 보관)는 지원되지 않습니다.
다음 단계
- 고급 스트리밍 수집 패턴에 대한 자동 로더 에 대해 알아보기
- 멱등성의 증분 로드를 위한 탐색 COPY INTO
- 클라우드 개체 스토리지 수집 패턴과 비교
- 작업 예약을 설정하여 수집 워크플로를 자동화하세요.
- Lakeflow Spark 선언적 파이프라인을 사용하여 변환이 포함된 엔드 투 엔드 데이터 파이프라인을 구축합니다.