Importar arquivos do SharePoint
Beta
O conector padrão do SharePoint está em versão Beta. Os administradores do espaço de trabalho podem controlar o acesso a este recurso na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks.
Aprenda como importar arquivos estruturados, semiestruturados e não estruturados do Microsoft SharePoint para tabelas Delta. O conector do SharePoint suporta a ingestão incremental de arquivos do SharePoint usando APIs de lotes e transmissões, incluindo Auto Loader, spark.read e COPY INTO, tudo com governança Unity Catalog .
Escolha seu conector do SharePoint
LakeFlow Connect oferece dois conectores complementares para SharePoint. Ambos acessam dados no SharePoint, mas atendem a objetivos distintos.
Consideração | gerenciamento do conector do SharePoint | Conector padrão do SharePoint |
|---|---|---|
Gestão e personalização | Um conector totalmente gerenciado. Conectores simples e de baixa manutenção para aplicações empresariais que ingerem dados em tabelas Delta e os mantêm sincronizados com a fonte. Consulte a seção de gerenciamento de conectores no LakeFlow Connect. | Crie um pipeline de ingestão personalizado com SQL, PySpark ou LakeFlow . Pipeline declarativo Spark usando APIs de lotes e transmissões como Oferece a flexibilidade para realizar transformações complexas durante a ingestão, ao mesmo tempo que lhe confere maior responsabilidade pela gestão e manutenção do seu pipeline. |
Formato de saída | Tabela de conteúdo binário uniforme. Ingere cada arquivo em formato binário (um arquivo por linha), juntamente com os metadados do arquivo em colunas adicionais. | Tabelas Delta estruturadas. Importa arquivos estruturados (como CSV e Excel) como tabelas Delta. Também pode ser usado para ingestão. Arquivos não estruturados em formato binário. |
Granularidade, filtragem e seleção | Não é possível selecionar subpastas ou arquivos em nível atual. Sem filtragem baseada em padrões. Importa todos os arquivos da biblioteca de documentos do SharePoint especificada. | Granular e personalizado. Seleção baseada em URL para importar dados da biblioteca de documentos, subpastas ou arquivos individuais. Também suporta filtragem baseada em padrões usando a opção |
recurso principal
O conector padrão do SharePoint oferece:
- Ingestão de arquivos estruturados, semiestruturados e não estruturados.
- Ingestão granular: Ingerir um site específico, um subsite, uma biblioteca de documentos, uma pasta ou um único arquivo.
- ingestão de lotes e transmissão usando
spark.read, Auto Loader eCOPY INTO - Inferência e evolução automática de esquemas para formatos estruturados e semiestruturados, como CSV e Excel.
- Armazenamento seguro de credenciais com uma conexão Unity Catalog
- Seleção de arquivos com correspondência de padrões usando
pathGlobFilter
Requisitos
Para importar arquivos do SharePoint, você precisa do seguinte:
- Um workspace com Unity Catalog ativado.
CREATE CONNECTIONprivilégios para criar uma conexão SharePoint (ouUSE CONNECTIONpara usar uma existente)- Computação que utiliza Databricks Runtime versão 17.3 LTS ou superior.
- Autenticação OAuth configurada com o escopo de permissão
Sites.Read.All - O recurso Beta do SharePoint é habilitado na página de Pré-visualizações . Veja as prévias do Gerenciador Databricks
- Opcional: Ative o recurso Excel Beta para analisar arquivos do Excel. Consulte a seção Ler arquivos do Excel.
Criar a conexão
Crie uma conexão com Unity Catalog para armazenar suas credenciais do SharePoint. O processo de configuração da conexão é o mesmo para os conectores padrão e gerenciados do SharePoint.
Para obter instruções completas de configuração de conexão, incluindo opções de autenticação OAuth, consulte Visão geral da configuração de ingestão do SharePoint.
Leia arquivos do SharePoint
Para ler arquivos do SharePoint usando Spark, especifique a conexão que você criou na etapa anterior usando a opção databricks.connection fonte de dados e forneça a URL do recurso do SharePoint que você deseja acessar. Este URL pode se referir a um arquivo específico, uma pasta, uma biblioteca de documentos (unidade) ou um site inteiro. Exemplos incluem:
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
Exemplos
Encontre exemplos de código para leitura de arquivos usando o conector padrão do SharePoint.
transmissão de arquivos do SharePoint usando Auto Loader
O Auto Loader oferece a maneira mais eficiente de importar arquivos estruturados do SharePoint de forma incremental. Ele detecta automaticamente novos arquivos e os processa à medida que chegam. Ele também pode importar arquivos estruturados e semiestruturados, como CSV e JSON, com inferência e evolução automática de esquemas. Para obter detalhes sobre o uso do Auto Loader, consulte Padrões comuns de carregamento de dados.
# 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")
)
Leia arquivos do SharePoint usando Spark .
# 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"))
Leia arquivos do SharePoint usando Spark SQL
O exemplo a seguir mostra como ingerir arquivos do SharePoint no SQL usando a função de tabela read_files . Para obter detalhes sobre o uso de read_files , consulte a função com valor de tabelaread_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"
);
Ingestão incremental com COPY INTO
COPY INTO Fornece carregamento incremental idempotente de arquivos em uma tabela Delta. Para obter detalhes sobre o uso de COPY INTO , consulte Padrões comuns de carregamento de dados usando 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'
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('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('headerRows' = '1')
COPY_OPTIONS ('mergeSchema' = 'true');
Ingestão de arquivos do SharePoint em um pipeline declarativo LakeFlow Spark
O SharePoint Connector requer Databricks Runtime 17.3 ou superior. Isso ainda não está disponível na versão LakeFlow Spark Declarative pipeline. Para ver as versões Databricks Runtime usadas com uma versão do pipeline LakeFlow Spark Declarative, consulte as notas sobre a versão dessa versão.
Os exemplos a seguir mostram como ler arquivos do SharePoint usando Auto Loader em um pipeline declarativo LakeFlow Spark :
- Python
- SQL
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")
-- 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"
);
Limitações
O conector padrão do SharePoint apresenta as seguintes limitações:
- Sem ingestão em vários sites : Não é possível ingerir dados de vários sites com a mesma consulta. Para ingerir dados de dois sites diferentes, você precisa escrever duas consultas separadas.
- Filtragem : Você pode usar a opção
pathGlobFilterpara filtrar arquivos por nome. A filtragem baseada no caminho da pasta não é suportada. - Formatos não suportados : Listas do SharePoint e .aspx Páginas do site não são suportadas. Somente arquivos na biblioteca de documentos são suportados.
- Não há suporte para gravação de dados em um servidor SharePoint.
- O Auto Loader
cleanSource(excluir ou arquivar arquivos na origem após a ingestão) não é suportado.
Próximos passos
- Saiba mais sobre Auto Loader para padrões avançados de ingestão de transmissão
- Explore a função COPY INTO para cargas incrementais idempotentes.
- Compare com os padrões de ingestão de armazenamento de objetoscloud
- Configure o programa Job para automatizar seu fluxo de trabalho de ingestão
- Use o pipeline declarativoLakeFlow Spark para construir pipeline de dados ponta a ponta com transformações