Поделиться через


Прием данных в хранилище

Область применения:✅ хранилище в Microsoft Fabric

Хранилище в Microsoft Fabric предлагает встроенные средства приема данных, позволяющие пользователям выполнять прием данных в хранилища в большом масштабе с помощью возможностей, свободных от кода или кода.

Определите, какой инструмент приема данных следует использовать

Чтобы решить, какой вариант приема данных используется, можно использовать следующие критерии:

  • Используйте инструкцию COPY (Transact-SQL) для операций приема данных с расширенным кодом, для максимальной пропускной способности приема данных или при необходимости добавления приема данных в рамках логики Transact-SQL.
    • Чтобы начать, см. раздел "Загрузка данных с использованием инструкции COPY"
    • Хранилище также поддерживает традиционную BULK INSERT инструкцию, которая эквивалентна COPY INTO с классическими параметрами загрузки.
    • Инструкция COPY в Хранилище поддерживает источники данных из учетных записей хранения Azure и папок OneLake lakehouse. Источники OneLake в настоящее время являются предварительной функцией.
  • Используйте конвейеры для рабочих процессов приема данных без написания кода или с минимальным количеством кода, которые выполняются многократно, по расписанию или включают большие объемы данных.
    • Чтобы приступить к работе, см. сведения о приеме данных в хранилище с помощью конвейеров.
    • С помощью конвейеров можно управлять надежными рабочими процессами для полного процесса извлечения, преобразования, загрузки (ETL), включающего действия для подготовки конечной среды, выполнения пользовательских инструкций Transact-SQL, выполнения подстановок или копирования данных из источника в место назначения.
  • Используйте потоки данных для интерфейса без кода, позволяющего пользовательским преобразованиям создавать исходные данные перед приемом.
    • Чтобы начать, см. загрузку данных с помощью потока данных.
    • Эти преобразования включают (но не ограничиваются) изменением типов данных, добавлением или удалением столбцов или использованием функций для создания вычисляемых столбцов.
  • Используйте взаимодействие с T-SQL для насыщенных функциями создания новых таблиц или обновления существующих с исходными данными в пределах одного рабочего пространства или во внешнем хранилище.
    • Чтобы приступить к работе, см. сведения о приеме данных в хранилище с помощью Transact-SQL.
    • Вы можете использовать Transact-SQL функции, например INSERT...SELECT, SELECT INTOили CREATE TABLE AS SELECT (CTAS) считывать данные из таблицы, ссылающейся на другие хранилища, lakehouses или зеркальные базы данных в той же рабочей области, или считывать данные из OPENROWSET функции, которая ссылается на файлы во внешних учетных записях хранения Azure.
    • Вы также можете создавать запросы между базами данных между различными хранилищами в рабочей области Fabric.

Поддерживаемые форматы и источники данных

Прием данных для хранилища в Microsoft Fabric предоставляет большое количество форматов данных и источников, которые можно использовать. Каждый из описанных параметров содержит собственный список поддерживаемых типов соединителей данных и форматов данных.

Для приема T-SQL табличные источники данных должны находиться в одной рабочей области Microsoft Fabric, а источники данных файлов — в Azure Data Lake или хранилище BLOB-объектов Azure. Запросы можно выполнять с использованием тройного именования или функции OPENROWSET для исходных данных. Источники данных таблицы могут ссылаться на наборы данных Delta Lake, а OPENROWSET() может ссылаться на файлы Parquet, CSV или JSONL в Azure Data Lake или хранилище BLOB-объектов Azure.

Например, предположим, что в рабочей области есть два хранилища с именем "Инвентаризация" и "Продажи". Запрос, например следующий, создает новую таблицу в хранилище инвентаризации с содержимым таблицы в складе инвентаризации, присоединенной к таблице в хранилище продаж, и внешними файлами, содержащими сведения о клиентах:

CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT 
    s.SalesOrders,
    i.ProductName,
    c.CustomerName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
    ON s.ProductID = i.ProductID
JOIN OPENROWSET( BULK 'abfss://<container>@<storage>.dfs.core.windows.net/<customer-file>.csv' ) AS c
    ON s.CustomerID = c.CustomerID
WHERE s.Region = 'West region';

Note

Чтение данных с помощью OPENROWSET может быть медленнее, чем запрос данных из таблицы. Если вы планируете получить доступ к тем же внешним данным неоднократно, рассмотрите возможность приема данных в выделенную таблицу для повышения производительности и эффективности запросов.

Инструкция COPY (Transact-SQL) в настоящее время поддерживает форматы ФАЙЛОВ PARQUET и CSV. Для источников данных в настоящее время поддерживаются Azure Data Lake Storage (ADLS) 2-го поколения и Хранилище BLOB-объектов Azure.

Конвейеры и потоки данных поддерживают широкий спектр источников данных и форматов данных. Дополнительные сведения см. в разделе "Конвейеры и потоки данных".

Лучшие практики

Функция команды COPY в хранилище в Microsoft Fabric использует простой, гибкий и быстрый интерфейс для приема данных с высокой пропускной способностью для рабочих нагрузок SQL. В текущей версии мы поддерживаем загрузку данных только из внешних учетных записей хранения.

Вы также можете использовать язык T-SQL для создания новой таблицы, а затем вставки в нее, а затем обновления и удаления строк данных. Данные можно вставлять из любой базы данных в рабочей области Microsoft Fabric с помощью запросов между базами данных. Если вы хотите принять данные из Lakehouse в хранилище, это можно сделать с помощью запроса между базами данных. Рассмотрим пример.

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • Избегайте приема данных с помощью одноэлементных INSERT инструкций, так как это приводит к снижению производительности запросов и обновлений. Если операторы singleton INSERT использовались для приема данных последовательно, рекомендуется создать новую таблицу с помощью CREATE TABLE AS SELECT (CTAS) или INSERT...SELECT шаблонов, и удалить исходную таблицу, а затем заново создать вашу таблицу, используя созданную вами таблицуCREATE TABLE AS SELECT (CTAS).
    • Удаление существующей таблицы влияет на семантику модели, включая любые пользовательские меры или настройки, которые вы могли сделать в семантической модели.
  • При работе с внешними данными в файлах рекомендуется, чтобы файлы размером не менее 4 МБ.
  • Для больших сжатых CSV-файлов рекомендуется разделить файл на несколько файлов.
  • Azure Data Lake Storage (ADLS) 2-го поколения обеспечивает более высокую производительность, чем Хранилище BLOB-объектов Azure (устаревшая версия). По возможности рекомендуется использовать учетную запись ADLS 2-го поколения.
  • Для конвейеров, которые выполняются часто, рекомендуется изолировать учетную запись хранения Azure от других служб, которые могут получить доступ к тем же файлам одновременно.
  • Явные транзакции позволяют группировать несколько изменений данных, чтобы они отображались только при чтении одной или нескольких таблиц, когда транзакция полностью зафиксирована. Вы также можете откатить транзакцию при сбое любого из изменений.
  • Если функция SELECT находится в транзакции и предшествует вставкам данных, автоматически созданная статистика может быть неточной после отката. Неточная статистика может привести к неоптимизированным планам запросов и времени выполнения. Если вы откатите транзакцию с SELECTs после большого вставки, обновите статистику столбцов, упомянутых в элементе SELECT.

Note

Независимо от способа приема данных в хранилищах файлы parquet, созданные задачей приема данных, будут оптимизированы с помощью оптимизации записи V-Order. V-Order оптимизирует файлы parquet, чтобы включить молниеносные операции чтения в вычислительных модулях Microsoft Fabric, таких как Power BI, SQL, Spark и другие. Запросы хранилища в целом получают более быстрое время чтения для запросов с этой оптимизацией, обеспечивая соответствие файлов parquet 100% спецификации с открытым исходным кодом. Не рекомендуется отключить V-Order, так как это может повлиять на производительность чтения. Дополнительные сведения о V-Order см. в разделе "Общие сведения о V-Order для хранилища" и управлении ими.