Automatisierte Enterprise BI-Instanz mit Azure Synapse Analytics und Azure Data FactoryAutomated enterprise BI with Azure Synapse Analytics and Azure Data Factory

Diese Referenzarchitektur veranschaulicht die Vorgehensweise für inkrementelles Laden in einer ELT-Pipeline (Extrahieren, Laden und Transformieren).This reference architecture shows how to perform incremental loading in an extract, load, and transform (ELT) pipeline. Sie verwendet Azure Data Factory, um die ELT-Pipeline zu automatisieren.It uses Azure Data Factory to automate the ELT pipeline. Die Pipeline verschiebt die neuesten OLTP-Daten inkrementell aus einer lokalen SQL Server-Datenbank in Azure Synapse.The pipeline incrementally moves the latest OLTP data from an on-premises SQL Server database into Azure Synapse. Transaktionsdaten werden in ein tabellarisches Modell für die Analyse transformiert.Transactional data is transformed into a tabular model for analysis.

GitHub-Logo Eine Referenzimplementierung dieser Architektur ist auf GitHub verfügbar.GitHub logo A reference implementation for this architecture is available on GitHub.

Architekturdiagramm für eine automatisierte Enterprise BI-Instanz mit Azure Synapse und Azure Data Factory

Diese Architektur basiert auf der Architektur unter Enterprise BI mit Azure Synapse, aber sie weist einige zusätzliche Funktionen auf, die für Data Warehousing-Szenarien für Unternehmen wichtig sind.This architecture builds on the one shown in Enterprise BI with Azure Synapse, but adds some features that are important for enterprise data warehousing scenarios.

  • Automatisierung der Pipeline mithilfe von Data Factory.Automation of the pipeline using Data Factory.
  • Inkrementelles Laden.Incremental loading.
  • Integration mehrerer Datenquellen.Integrating multiple data sources.
  • Laden von binären Daten wie räumliche Daten und Bilder.Loading binary data such as geospatial data and images.

ArchitectureArchitecture

Die Architektur umfasst die folgenden Komponenten.The architecture consists of the following components.

DatenquellenData sources

Lokaler SQL Server.On-premises SQL Server. Die Quelldaten befinden sich in einer lokalen SQL Server-Datenbank.The source data is located in a SQL Server database on premises. Um die lokale Umgebung zu simulieren, stellen die Bereitstellungsskripts für diese Architektur eine VM in Azure bereit, auf der SQL Server installiert ist.To simulate the on-premises environment, the deployment scripts for this architecture provision a virtual machine in Azure with SQL Server installed. Die OLTP-Beispieldatenbank von Wide World Importers wird als Quelldatenbank verwendet.The Wide World Importers OLTP sample database is used as the source database.

Externe Daten.External data. Ein gängiges Szenario für Data Warehouses ist die Integration mehrerer Datenquellen.A common scenario for data warehouses is to integrate multiple data sources. Diese Referenzarchitektur lädt ein externes Dataset, das die Stadtbevölkerung nach Jahr enthält, und integriert es in die Daten aus der OLTP-Datenbank.This reference architecture loads an external data set that contains city populations by year, and integrates it with the data from the OLTP database. Auf der Grundlage dieser Daten können Sie verschiedene Fragen beantworten. Beispiel: „Entspricht die Umsatzsteigerung in jeder Region dem Bevölkerungswachstum, oder ist sie unverhältnismäßig höher?“You can use this data for insights such as: "Does sales growth in each region match or exceed population growth?"

Erfassung und DatenspeicherungIngestion and data storage

Blobspeicher.Blob Storage. Blobspeicher wird als Stagingbereich für die Quelldaten vor dem Laden in Azure Synapse verwendet.Blob storage is used as a staging area for the source data before loading it into Azure Synapse.

Azure Synapse:Azure Synapse. Azure Synapse ist ein verteiltes System für die Analyse großer Datenmengen.Azure Synapse is a distributed system designed to perform analytics on large data. Es unterstützt massive Parallelverarbeitung (Massive Parallel Processing, MPP), die die Ausführung von Hochleistungsanalysen ermöglicht.It supports massive parallel processing (MPP), which makes it suitable for running high-performance analytics.

Azure Data FactoryAzure Data Factory. Data Factory ist ein verwalteter Dienst, der Datenverschiebung und Datentransformation orchestriert und automatisiert.Data Factory is a managed service that orchestrates and automates data movement and data transformation. In dieser Architektur koordiniert er die verschiedenen Phasen des ELT-Prozesses.In this architecture, it coordinates the various stages of the ELT process.

Analysen und BerichteAnalysis and reporting

Azure Analysis Services:Azure Analysis Services. Analysis Services ist ein vollständig verwalteter Dienst, der Datenmodellierungsfunktionen ermöglicht.Analysis Services is a fully managed service that provides data modeling capabilities. Das semantische Modell wird in Analysis Services geladen.The semantic model is loaded into Analysis Services.

Power BI:Power BI. Power BI ist eine Suite aus Business Analytics-Tools zum Analysieren von Daten für Einblicke in Geschäftsvorgänge.Power BI is a suite of business analytics tools to analyze data for business insights. In dieser Architektur dient sie zum Abfragen des in Analysis Services gespeicherten semantischen Modells.In this architecture, it queries the semantic model stored in Analysis Services.

AuthenticationAuthentication

Azure Active Directory (Azure AD) authentifiziert Benutzer, die über Power BI eine Verbindung mit dem Analysis Services-Server herstellen.Azure Active Directory (Azure AD) authenticates users who connect to the Analysis Services server through Power BI.

Data Factory kann auch Azure AD für die Authentifizierung bei Azure Synapse nutzen, indem ein Dienstprinzipal oder eine verwaltete Dienstidentität (MSI) verwendet wird.Data Factory can use also use Azure AD to authenticate to Azure Synapse, by using a service principal or Managed Service Identity (MSI). Der Einfachheit halber verwendet die Beispielbereitstellung die SQL Server-Authentifizierung.For simplicity, the example deployment uses SQL Server authentication.

DatenpipelineData pipeline

In Azure Data Factory ist eine Pipeline eine logische Gruppierung von Aktivitäten zum Koordinieren einer Aufgabe – in diesem Fall das Laden und Transformieren von Daten in Azure Synapse.In Azure Data Factory, a pipeline is a logical grouping of activities used to coordinate a task — in this case, loading and transforming data into Azure Synapse.

Diese Referenzarchitektur definiert eine Masterpipeline, die eine Sequenz von untergeordneten Pipelines ausführt.This reference architecture defines a master pipeline that runs a sequence of child pipelines. Jede untergeordnete Pipeline lädt Daten in eine oder mehrere Data Warehouse-Tabellen.Each child pipeline loads data into one or more data warehouse tables.

Screenshot der Pipeline in Azure Data Factory

Inkrementelles LadenIncremental loading

Beim Ausführen eines automatisierten ETL-oder ELT-Prozesses ist es am effizientesten, nur die Daten zu laden, die sich seit der vorhergehenden Ausführung geändert haben.When you run an automated ETL or ELT process, it's most efficient to load only the data that changed since the previous run. Dies wird als inkrementeller Ladevorgang bezeichnet, im Gegensatz zu einem vollständigen Ladevorgang, bei dem alle Daten geladen werden.This is called an incremental load, as opposed to a full load that loads all the data. Zum Ausführen eines inkrementellen Ladevorgangs benötigen Sie eine Möglichkeit zum Identifizieren, welche Daten sich geändert haben.To perform an incremental load, you need a way to identify which data has changed. Der gängigste Ansatz ist die Verwendung eines Werts zum Erkennen von Änderungen mit oberem Grenzwert, d.h. der aktuelle Wert einer Spalte in der Quelltabelle – entweder einer datetime-Spalte oder einer eindeutigen Integer-Spalte – wird nachverfolgt.The most common approach is to use a high water mark value, which means tracking the latest value of some column in the source table, either a datetime column or a unique integer column.

Ab SQL Server 2016 können Sie temporale Tabellen verwenden.Starting with SQL Server 2016, you can use temporal tables. Hierbei handelt es sich um Tabellen mit Systemversionsverwaltung, die einen vollständigen Verlauf aller Datenänderungen beibehalten.These are system-versioned tables that keep a full history of data changes. Die Datenbank-Engine zeichnet den Verlauf aller Änderungen automatisch in einer separaten Verlaufstabelle auf.The database engine automatically records the history of every change in a separate history table. Sie können die Verlaufsdaten abfragen, indem Sie eine FOR SYSTEM_TIME-Klausel an eine Abfrage anhängen.You can query the historical data by adding a FOR SYSTEM_TIME clause to a query. Intern fragt die Datenbank-Engine die Verlaufstabelle ab, dies ist für die Anwendung jedoch transparent.Internally, the database engine queries the history table, but this is transparent to the application.

Hinweis

Für frühere Versionen von SQL Server können Sie Change Data Capture (CDC) verwenden.For earlier versions of SQL Server, you can use Change Data Capture (CDC). Dieser Ansatz ist weniger geeignet als temporale Tabellen, da Sie eine separate Änderungstabelle abfragen müssen, und Änderungen werden anhand einer Protokollfolgenummer anstatt eines Zeitstempels nachverfolgt.This approach is less convenient than temporal tables, because you have to query a separate change table, and changes are tracked by a log sequence number, rather than a timestamp.

Temporale Tabellen sind hilfreich für Dimensionsdaten, die sich im Laufe der Zeit ändern können.Temporal tables are useful for dimension data, which can change over time. Faktentabellen stellen in der Regel eine unveränderliche Transaktion wie einen Verkauf dar, und in diesem Fall ist das Beibehalten des Systemversionsverlaufs nicht sinnvoll.Fact tables usually represent an immutable transaction such as a sale, in which case keeping the system version history doesn't make sense. Stattdessen weisen Transaktionen normalerweise eine Spalte auf, die das Transaktionsdatum darstellt, das als Wasserzeichenwert verwendet werden kann.Instead, transactions usually have a column that represents the transaction date, which can be used as the watermark value. Beispielsweise enthalten in der OLTP-Datenbank von Wide World Importers die Tabellen „Sales.Invoices“ und „Sales.InvoiceLines“ das Feld LastEditedWhen, dessen Standardwert sysdatetime() ist.For example, in the Wide World Importers OLTP database, the Sales.Invoices and Sales.InvoiceLines tables have a LastEditedWhen field that defaults to sysdatetime().

Hier ist der allgemeine Ablauf für die ELT-Pipeline:Here is the general flow for the ELT pipeline:

  1. Verfolgen Sie für jede Tabelle in der Quelldatenbank den Trennzeitpunkt der Ausführung des letzten ELT-Auftrags nach.For each table in the source database, track the cutoff time when the last ELT job ran. Speichern Sie diese Informationen im Data Warehouse.Store this information in the data warehouse. (Bei der Ersteinrichtung sind alle Zeiten auf „1.1.1900“ festgelegt.)(On initial setup, all times are set to '1-1-1900'.)

  2. Während des Datenexportschritts wird der Trennzeitpunkt als Parameter an einen Satz von gespeicherten Prozeduren in der Quelldatenbank übergeben.During the data export step, the cutoff time is passed as a parameter to a set of stored procedures in the source database. Diese gespeicherten Prozeduren fragen alle Datensätze ab, die nach dem Trennzeitpunkt geändert oder erstellt wurden.These stored procedures query for any records that were changed or created after the cutoff time. Für die Sales-Faktentabelle wird die Spalte LastEditedWhen verwendet.For the Sales fact table, the LastEditedWhen column is used. Für die Dimensionsdaten werden temporale Tabellen mit Systemversionsverwaltung verwendet.For the dimension data, system-versioned temporal tables are used.

  3. Wenn die Datenmigration abgeschlossen ist, aktualisieren Sie die Tabelle, in der die Trennzeitpunkte gespeichert werden.When the data migration is complete, update the table that stores the cutoff times.

Es ist auch hilfreich, eine Herkunft für jede ELT-Ausführung aufzuzeichnen.It's also useful to record a lineage for each ELT run. Für einen bestimmten Datensatz ordnet die Herkunft diesen Datensatz der ELT-Ausführung zu, bei der die Daten erzeugt wurden.For a given record, the lineage associates that record with the ELT run that produced the data. Bei jeder ETL-Ausführung wird für jede Tabelle ein neuer Herkunftsdatensatz erstellt, der die Start- und Endladezeiten anzeigt.For each ETL run, a new lineage record is created for every table, showing the starting and ending load times. Die Herkunftsschlüssel für die einzelnen Datensätze werden in den Dimensions- und Faktentabellen gespeichert.The lineage keys for each record are stored in the dimension and fact tables.

Screenshot der Tabelle „Dimension.City“

Aktualisieren Sie das Analysis Services-Tabellenmodell, nachdem ein neuer Datenbatch in das Warehouse geladen wurde.After a new batch of data is loaded into the warehouse, refresh the Analysis Services tabular model. Siehe Asynchrones Aktualisieren mit der REST-API.See Asynchronous refresh with the REST API.

DatenbereinigungData cleansing

Die Datenbereinigung sollte Teil des ELT-Prozesses sein.Data cleansing should be part of the ELT process. In dieser Referenzarchitektur ist die Tabelle mit der Stadtbevölkerung eine Quelle ungültiger Daten, in der einige Städte keine Bevölkerung aufweisen, da möglicherweise keine Daten verfügbar waren.In this reference architecture, one source of bad data is the city population table, where some cities have zero population, perhaps because no data was available. Während der Verarbeitung entfernt die ELT-Pipeline diese Städte aus der Tabelle mit der Stadtbevölkerung.During processing, the ELT pipeline removes those cities from the city population table. Führen Sie die Datenbereinigung in Stagingtabellen statt in externen Tabellen durch.Perform data cleansing on staging tables, rather than external tables.

Hier ist die gespeicherte Prozedur, die die Städte ohne Bevölkerung der Tabelle mit der Stadtbevölkerung entfernt.Here is the stored procedure that removes the cities with zero population from the City Population table. (Sie finden die Quelldatei hier.)(You can find the source file here.)

DELETE FROM [Integration].[CityPopulation_Staging]
WHERE RowNumber in (SELECT DISTINCT RowNumber
FROM [Integration].[CityPopulation_Staging]
WHERE POPULATION = 0
GROUP BY RowNumber
HAVING COUNT(RowNumber) = 4)

Externe DatenquellenExternal data sources

Data Warehouses fassen häufig Daten aus mehreren Quellen zusammen.Data warehouses often consolidate data from multiple sources. Diese Referenzarchitektur lädt eine externe Datenquelle, die demografische Daten enthält.This reference architecture loads an external data source that contains demographics data. Dieses Dataset in Azure Blob Storage als Teil des Beispiels WorldWideImportersDW verfügbar.This dataset is available in Azure blob storage as part of the WorldWideImportersDW sample.

Azure Data Factory kann mithilfe des Blob Storage-Connectors direkt aus Blob Storage kopieren.Azure Data Factory can copy directly from blob storage, using the blob storage connector. Der Connector erfordert jedoch eine Verbindungszeichenfolge oder eine Shared Access Signature, damit er nicht zum Kopieren eines Blobs mit öffentlichem Lesezugriff verwendet werden kann.However, the connector requires a connection string or a shared access signature, so it can't be used to copy a blob with public read access. Um dieses Problem zu umgehen, können Sie PolyBase zum Erstellen einer externen Tabelle über Blob Storage verwenden und die externen Tabellen dann in Azure Synapse kopieren.As a workaround, you can use PolyBase to create an external table over Blob storage and then copy the external tables into Azure Synapse.

Verarbeiten von umfangreichen BinärdatenHandling large binary data

In der Quelldatenbank weist die Tabelle mit Städten die Spalte „Ort“ auf, die den räumlichen Datentyp Geografie enthält.In the source database, the Cities table has a Location column that holds a geography spatial data type. Da Azure Synapse den Typ Geografie nicht nativ unterstützt, wird dieses Feld während des Ladens in einen varbinary-Typ konvertiert.Azure Synapse doesn't support the geography type natively, so this field is converted to a varbinary type during loading. (Siehe Verwenden von Problemumgehungen für nicht unterstützte Datentypen.)(See Workarounds for unsupported data types.)

PolyBase unterstützt jedoch eine maximale Spaltengröße von varbinary(8000), was bedeutet, dass einige Daten möglicherweise abgeschnitten werden.However, PolyBase supports a maximum column size of varbinary(8000), which means some data could be truncated. Dieses Problem lässt sich umgehen, indem die Daten während des Exports wie folgt in Blöcke aufgeteilt und dann wieder zusammengefügt werden:A workaround for this problem is to break the data up into chunks during export, and then reassemble the chunks, as follows:

  1. Erstellen Sie eine temporäre Stagingtabelle für die Standort-Spalte.Create a temporary staging table for the Location column.

  2. Teilen Sie die Standortdaten für jede Stadt in Blöcke von 8000 Bytes auf. Dies ergibt 1 – N Zeilen für jede Stadt.For each city, split the location data into 8000-byte chunks, resulting in 1 – N rows for each city.

  3. Um die Blöcke wieder zusammenzusetzen, verwenden Sie den T-SQL-PIVOT-Operator, um Zeilen in Spalten umwandeln und dann die Spaltenwerte für jede Stadt zu verketten.To reassemble the chunks, use the T-SQL PIVOT operator to convert rows into columns and then concatenate the column values for each city.

Die Herausforderung besteht darin, dass jede Stadt je nach Größe der geografischen Daten in eine unterschiedliche Anzahl von Zeilen aufgeteilt wird.The challenge is that each city will be split into a different number of rows, depending on the size of geography data. Damit der PIVOT-Operator funktioniert, muss jede Stadt die gleiche Anzahl von Zeilen aufweisen.For the PIVOT operator to work, every city must have the same number of rows. Dazu wendet die T-SQL-Abfrage (die Sie hier anzeigen können) einige Tricks an, um die Zeilen mit leeren Werten aufzufüllen, sodass jede Stadt nach dem Pivot-Vorgang die gleiche Anzahl von Spalten aufweist.To make this work, the T-SQL query (which you can view here) does some tricks to pad out the rows with blank values, so that every city has the same number of columns after the pivot. Die resultierende Abfrage erweist sich als wesentlich schneller als Durchlaufen der einzelnen Zeilen.The resulting query turns out to be much faster than looping through the rows one at a time.

Der gleiche Ansatz wird für Bilddaten verwendet.The same approach is used for image data.

Langsam veränderliche DimensionenSlowly changing dimensions

Dimensionsdaten sind relativ statisch, können sich jedoch ändern.Dimension data is relatively static, but it can change. Beispielsweise kann ein Produkt einer anderen Produktkategorie zugewiesen werden.For example, a product might get reassigned to a different product category. Es gibt verschiedene Ansätze zur Handhabung von langsam veränderlichen Dimensionen.There are several approaches to handling slowly changing dimensions. Ein gängiges Verfahren mit der Bezeichnung Typ 2 ist das Hinzufügen eines neuen Datensatzes bei jeder Dimensionsänderung.A common technique, called Type 2, is to add a new record whenever a dimension changes.

Zur Umsetzung des Typ 2-Ansatzes erfordern Dimensionstabellen zusätzliche Spalten, die den effektiven Datumsbereich für einen bestimmten Datensatz angeben.In order to implement the Type 2 approach, dimension tables need additional columns that specify the effective date range for a given record. Außerdem werden Primärschlüssel aus der Quelldatenbank dupliziert, daher muss die Dimensionstabelle über einen künstlichen Primärschlüssel verfügen.Also, primary keys from the source database will be duplicated, so the dimension table must have an artificial primary key.

Die folgende Abbildung zeigt die Tabelle „Dimension.City“.The following image shows the Dimension.City table. Die Spalte WWI City ID ist der Primärschlüssel aus der Quelldatenbank.The WWI City ID column is the primary key from the source database. Die Spalte City Key ist ein künstlicher Schlüssel, der während der Verarbeitung der ETL-Pipeline generiert wurde.The City Key column is an artificial key generated during the ETL pipeline. Beachten Sie auch, dass in der Tabelle die Spalten Valid From und Valid To vorhanden sind, die den Bereich definieren, in dem die einzelnen Zeilen gültig waren.Also notice that the table has Valid From and Valid To columns, which define the range when each row was valid. Das Valid To-Element aktueller Werte entspricht „9999-12-31“.Current values have a Valid To equal to '9999-12-31'.

Screenshot der Tabelle „Dimension.City“

Der Vorteil dieses Ansatzes ist, dass historische Daten beibehalten werden, die für die Analyse nützlich sein können.The advantage of this approach is that it preserves historical data, which can be valuable for analysis. Allerdings sind dabei auch mehrere Zeilen für dieselbe Entität vorhanden.However, it also means there will be multiple rows for the same entity. Hier sehen Sie beispielsweise Datensätze, die WWI City ID = 28561 entsprechen:For example, here are the records that match WWI City ID = 28561:

Zweiter Screenshot der Tabelle „Dimension.City“

Ordnen Sie jeden Sales-Fakt einer einzelnen Zeile in der Tabelle „Dimension.City“ zu, die dem Rechnungsdatum entspricht.For each Sales fact, you want to associate that fact with a single row in City dimension table, corresponding to the invoice date. Erstellen Sie als Teil des ETL-Prozesses eine weitere Spalte, dieAs part of the ETL process, create an additional column that

Die folgende T-SQL-Abfrage erstellt eine temporäre Tabelle, die jede Rechnung dem richtigen City-Schlüssel aus der Tabelle „Dimension.City“ zuordnet.The following T-SQL query creates a temporary table that associates each invoice with the correct City Key from the City dimension table.

CREATE TABLE CityHolder
WITH (HEAP , DISTRIBUTION = HASH([WWI Invoice ID]))
AS
SELECT DISTINCT s1.[WWI Invoice ID] AS [WWI Invoice ID],
                c.[City Key] AS [City Key]
    FROM [Integration].[Sale_Staging] s1
    CROSS APPLY (
                SELECT TOP 1 [City Key]
                    FROM [Dimension].[City]
                WHERE [WWI City ID] = s1.[WWI City ID]
                    AND s1.[Last Modified When] > [Valid From]
                    AND s1.[Last Modified When] <= [Valid To]
                ORDER BY [Valid From], [City Key] DESC
                ) c

Diese Tabelle wird verwendet, um eine Spalte in der Sales-Faktentabelle auszufüllen:This table is used to populate a column in the Sales fact table:

UPDATE [Integration].[Sale_Staging]
SET [Integration].[Sale_Staging].[WWI Customer ID] =  CustomerHolder.[WWI Customer ID]

Diese Spalte ermöglicht, dass eine Power BI-Abfrage den richtigen City-Datensatz für eine bestimmte Verkaufsrechnung findet.This column enables a Power BI query to find the correct City record for a given sales invoice.

SicherheitshinweiseSecurity considerations

Für höhere Sicherheit können Sie Virtual Network-Dienstendpunkte zum Schützen von Azure-Dienstressourcen verwenden, indem diese ausschließlich auf Ihr virtuelles Netzwerk beschränkt sind.For additional security, you can use Virtual Network service endpoints to secure Azure service resources to only your virtual network. Der öffentliche Internetzugriff auf diese Ressourcen wird dadurch vollständig entfernt, sodass nur Datenverkehr aus Ihrem virtuellen Netzwerk zulässig ist.This fully removes public Internet access to those resources, allowing traffic only from your virtual network.

Mit diesem Ansatz erstellen Sie ein VNET in Azure und dann private Dienstendpunkte für Azure-Dienste.With this approach, you create a VNet in Azure and then create private service endpoints for Azure services. Diese Dienste sind dann auf Datenverkehr aus diesem virtuellen Netzwerk beschränkt.Those services are then restricted to traffic from that virtual network. Sie können auch über ein Gateway aus Ihrem lokalen Netzwerk darauf zugreifen.You can also reach them from your on-premises network through a gateway.

Bedenken Sie dabei folgende Einschränkungen:Be aware of the following limitations:

  • Wenn Dienstendpunkte für Azure Storage aktiviert sind, kann PolyBase keine Daten aus Storage in Azure Synapse kopieren.If service endpoints are enabled for Azure Storage, PolyBase cannot copy data from Storage into Azure Synapse. Dieses Problem kann entschärft werden.There is a mitigation for this issue. Weitere Informationen finden Sie unter Auswirkungen der Verwendung von VNET-Dienstendpunkten mit Azure Storage.For more information, see Impact of using VNet Service Endpoints with Azure storage.

  • Zum Verschieben von Daten aus einem lokalen Speicher in Azure Storage müssen Sie öffentliche IP-Adressen in Ihrem lokalen Speicher oder ExpressRoute auf die Whitelist setzen.To move data from on-premises into Azure Storage, you will need to whitelist public IP addresses from your on-premises or ExpressRoute. Details finden Sie unter Schützen von Azure-Diensten in virtuellen Netzwerken.For details, see Securing Azure services to virtual networks.

  • Stellen Sie im virtuellen Netzwerk einen virtuellen Windows-Computer bereit, der den Azure Synapse-Dienstendpunkt enthält, damit Analysis Services Daten aus Azure Synapse lesen kann.To enable Analysis Services to read data from Azure Synapse, deploy a Windows VM to the virtual network that contains the Azure Synapse service endpoint. Installieren Sie auf diesem virtuellen Computer ein lokales Azure-Datengateway.Install Azure On-premises Data Gateway on this VM. Verbinden Sie dann Ihren Azure Analysis-Dienst, mit dem Datengateway.Then connect your Azure Analysis service to the data gateway.

Bereitstellen der LösungDeploy the solution

Führen Sie zum Bereitstellen und Ausführen der Referenzimplementierung die Schritte aus der GitHub-Infodatei aus.To the deploy and run the reference implementation, follow the steps in the GitHub readme. Folgendes wird bereitgestellt:It deploys the following:

  • Eine Windows-VM, um einen lokalen Datenbankserver zu simulieren.A Windows VM to simulate an on-premises database server. Sie enthält SQL Server 2017 und zugehörige Tools zusammen mit Power BI Desktop.It includes SQL Server 2017 and related tools, along with Power BI Desktop.
  • Ein Azure Storage-Konto, das Blobspeicher zum Speichern von Daten bereitstellt, die aus SQL Server-Datenbank exportiert wurden.An Azure storage account that provides Blob storage to hold data exported from the SQL Server database.
  • Eine Azure Synapse-Instanz.An Azure Synapse instance.
  • Eine Azure Analysis Services-Instanz.An Azure Analysis Services instance.
  • Azure Data Factory und die Data Factory-Pipeline für den ELT-Auftrag.Azure Data Factory and the Data Factory pipeline for the ELT job.

Es wird empfohlen, sich das folgende Azure-Beispielszenario anzusehen. Darin wird veranschaulicht, wie einige dieser Technologien in spezifischen Lösungen verwendet werden:You may want to review the following Azure example scenarios that demonstrate specific solutions using some of the same technologies: