Прием файлов из SharePoint

Это важно

Эта функция доступна в бета-версии. Администраторы рабочей области могут управлять доступом к этой функции на странице "Предварительные версии ". См. Управление предварительными версиями Azure Databricks.

:::note Соответствие

Соединитель SharePoint поддерживает использование в рабочих областях с включенными параметрами Configure расширенной безопасности и соответствия требованиям.

:::

Вы можете получать структурированные, полуструктурированные и неструктурированные файлы из Microsoft SharePoint в таблицы Delta. Соединитель SharePoint поддерживает добавочное прием файлов SharePoint с помощью API пакетной и потоковой передачи, включая автозагрузчик, spark.read и COPY INTO, все с управлением каталогом Unity.

Выберите ваш соединитель SharePoint

Lakeflow Connect предлагает два дополнительных соединителя SharePoint. Они оба получают доступ к данным в SharePoint, но поддерживают разные цели.

Рассмотрение Управляемый соединитель SharePoint Стандартный соединитель SharePoint
Управление и настройка Полностью управляемый соединитель.
Простые, малозатратные в обслуживании соединители для корпоративных приложений, которые загружают данные в Delta-таблицы и поддерживают их синхронизацию с источником. См. раздел "Управляемые соединители" в Lakeflow Connect.
Создавайте настраиваемые конвейеры приема с помощью SQL, PySpark или декларативных конвейеров Lakeflow Spark, используя пакетные и потоковые API, такие как read_files, spark.read, COPY INTO и автозагрузчик.
Обеспечивает гибкость для выполнения сложных преобразований во время загрузки, возлагая на вас большую ответственность за управление и обслуживание пайплайнов.
Формат вывода Единая таблица двоичного содержимого. Загрузка каждого файла в двоичном формате (один файл на строку) вместе с метаданными файла
дополнительные столбцы.
Структурированные разностные таблицы. Прием структурированных файлов (например, CSV и Excel) в виде разностных таблиц. Также может быть использовано для приема
неструктурированные файлы в двоичном формате.
Детализация, фильтрация и выбор На сегодняшний день функция выбора вложенных папок или уровня файла недоступна. Фильтрация на основе шаблонов отсутствует.
Прием всех файлов в указанной библиотеке документов SharePoint.
Детализированный и настраиваемый.
Выбор с использованием URL-адресов для получения из библиотек документов, вложенных папок или отдельных файлов. Кроме того, поддерживает фильтрацию на основе шаблонов с помощью pathGlobFilter параметра.

Ключевые особенности

Стандартный соединитель SharePoint предлагает:

  • Прием структурированных, полуструктурированных и неструктурированных файлов
  • Гранулированная загрузка: загрузка определенного сайта, под-сайта, библиотеки документов, папки или одного файла
  • Прием пакетной и потоковой передачи с использованием spark.read, Автозагрузчика и COPY INTO
  • Автоматическое вывод схемы и эволюция для структурированных и полуструктурированных форматов, таких как CSV и Excel
  • Безопасное хранение учетных данных через интеграцию с каталогом Unity
  • Выбор файла с сопоставлением шаблонов с помощью pathGlobFilter

Требования

Чтобы получить файлы из SharePoint, необходимо следующее:

  • Рабочая область с включённым каталогом Unity.
  • CREATE CONNECTION привилегии для создания подключения SharePoint или соответствующего привилегии для использования существующего на основе режима доступа кластера:
    • Выделенный режим доступа: MANAGE CONNECTION.
    • Стандартный режим доступа: USE CONNECTION.
  • Вычисления, использующие Databricks Runtime версии 17.3 LTS или более поздней.
  • Проверка подлинности OAuth настроена с помощью области Sites.Read.All или области разрешений Sites.Selected.
  • Функция бета-версии SharePoint включена на странице Previews. См. Управление предварительными версиями Azure Databricks.
  • Необязательно. Включите функцию Excel бета-версии для синтаксического анализа файлов Excel. См. раздел Read Excel files.

Создание подключения

Создайте подключение каталога Unity для хранения учетных данных SharePoint. Процесс установки подключения используется как между стандартными, так и управляемыми соединителями SharePoint.

Полные инструкции по настройке подключения, включая параметры проверки подлинности OAuth, см. в разделе Overview установки приема SharePoint.

Чтение файлов из SharePoint

Чтобы прочитать файлы, передайте соединение, созданное с помощью параметра databricks.connection, и URL-адрес, указывающий на ресурс SharePoint, к которому требуется получить доступ. Указанный URL-адрес определяет область приема.

Следующие типы путей поддерживаются в Databricks Runtime 17.3 LTS и более поздних версиях:

Тип пути Description
Site Скопируйте URL-адрес сайта из адресной строки.
https://mytenant.sharepoint.com/sites/test-site
Подсайт Скопируйте URL-адрес дочернего сайта из адресной строки.
https://mytenant.sharepoint.com/sites/test-site/test-subsite
Библиотека документов Откройте библиотеку из содержимого сайта и скопируйте URL-адрес из адресной строки.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents
https://mytenant.sharepoint.com/sites/test-site/custom-drive
Folder Откройте папку из содержимого сайта и скопируйте URL-адрес из адресной строки. Кроме того, откройте область Details в SharePoint и щелкните значок копирования рядом с Path.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites...
https://mytenant.sharepoint.com/sites/test-site/custom-drive/test-folder
Файл Выберите файл, щелкните меню переполнения (...) и выберите "Предварительный просмотр". Скопируйте URL-адрес из адресной строки. Кроме того, откройте область Details в SharePoint и щелкните значок копирования рядом с Path.
https://mytenant.sharepoint.com/sites/test-site/Shared%20Documents/Forms/AllItems.aspx?viewid=1a2b3c...
https://mytenant.sharepoint.com/sites/test-site/custom-drive/test-folder/test.csv

Databricks Runtime 18.3 и более поздних версий добавляет поддержку следующих типов путей:

Тип пути Description
Tenant Скопируйте корневой URL-адрес клиента из адресной строки.
https://mytenant.sharepoint.com
Вложенный подсайт Скопируйте URL-адрес дочернего сайта из адресной строки.
https://mytenant.sharepoint.com/sites/test-site/subsite/nested-subsite/nested-nested-subsite
Ссылка для обмена Выберите файл или папку, щелкните меню переполнения (...) и выберите ссылку "Копировать". Databricks рекомендует установить ссылку общего доступа, чтобы она не истекала.
https://mytenant.sharepoint.com/:i:/s/test-site/1A2B3C4D5E6F7G8H9I
Microsoft 365 для Интернета (ранее — Office) Откройте файл в Microsoft 365 для Интернета и скопируйте URL-адрес из адресной строки.
https://mytenant.sharepoint.com/:x:/r/sites/test-site/_layouts/15/Doc.aspx?sourcedoc=%1A2B...

Примеры

Существует несколько способов чтения файлов с помощью стандартного соединителя SharePoint.

Stream 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")
)

Read SharePoint файлы с помощью пакетного чтения Spark

В следующем примере показано, как загружать файлы SharePoint в Python с помощью функции spark.read.

# 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"))

Read SharePoint файлы с помощью Spark SQL

В следующем примере показано, как принять SharePoint файлы в SQL с помощью функции read_files табличное значение. Дополнительные сведения об использовании 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 обеспечивает идемпотентную инкрементную загрузку файлов в таблицу Delta. Дополнительные сведения об использовании см. в 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');

Ingest-файлы SharePoint в декларативных конвейерах Spark Lakeflow

Замечание

Соединитель SharePoint требует Databricks Runtime 17.3 или более поздней версии. Чтобы использовать соединитель, установите "CHANNEL" = "PREVIEW" в настройках конвейера. Дополнительные сведения о предварительных версиях см. в справочнике по свойствам конвейера.

В следующих примерах показано, как считывать файлы SharePoint с помощью автозагрузчика в Декларативных конвейерах Spark Lakeflow.

Python

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 (например, PDF-файлов, Word документов или PowerPoint файлов) с помощью стандартного соединителя SharePoint с форматом binaryFile содержимое файла хранится в виде необработанных двоичных данных. Чтобы подготовить эти файлы для рабочих нагрузок ИИ, таких как RAG, поиск, классификация или понимание документов, можно проанализировать двоичное содержимое в структурированные, запрашиваемые выходные данные с помощью ai_parse_document.

В следующем примере показано, как проанализировать неструктурированные документы, хранящиеся в бронзовой таблице Delta с именем 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 содержит извлеченный текст, таблицы, сведения о макете и метаданные, которые можно непосредственно использовать для последующих этапов ИИ-конвейера.

Инкрементный синтаксический анализ с использованием декларативных конвейеров Lakeflow Spark

Вы также можете использовать ai_parse_document в декларативных конвейерах Lakeflow Spark для включения инкрементного синтаксического анализа. В качестве потока новых файлов из 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_parse_document .

Ограничения

Стандартный соединитель SharePoint имеет следующие ограничения.

  • Нет многосайтового ввода данных: вы не можете вводить данные с нескольких сайтов с одним и тем же запросом. Чтобы выполнить выборку из двух узлов, необходимо написать два отдельных запроса.
  • Фильтрация: можно использовать pathGlobFilter параметр для фильтрации файлов по имени. Фильтрация на основе пути к папке не поддерживается.
  • форматы Unsupported: SharePoint Списки и страницы сайта .aspx не поддерживаются. Поддерживаются только файлы в библиотеках документов.
  • Обратная запись на сервер SharePoint не поддерживается.
  • Автозагрузчик cleanSource (удаление или архивация файлов в источнике после приема) не поддерживается.

Дальнейшие шаги