Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tip
Microsoft Fabric Data Warehouse je relační sklad v podnikovém měřítku na základu datového jezera s architekturou připravenou pro budoucnost, integrovanou AI a novými funkcemi. Pokud s datovými sklady začínáte, začněte pracovat s Fabric Data Warehouse. Stávající úlohy fondu dedikované SQL můžou upgradovat na Fabric a získat tak přístup k novým funkcím napříč datovou vědou, analýzou v reálném čase a reportováním.
Tento kurz používá PolyBase k načtení datového skladu WideWorldImportersDW z Azure Blob Storage do vašeho datového skladu ve službě Azure Synapse Analytics SQL pool. Tento kurz používá Azure Portal a aplikaci SQL Server Management Studio (SSMS) k:
- Vytvoření vyhrazeného uživatele pro načítání dat
- Vytvoření externích tabulek, které jako zdroj dat používají objekt blob Azure
- Načtení dat do datového skladu pomocí příkazu CTAS T-SQL
- Zobrazení průběhu nahrávání dat
- Vygenerujte rok dat v tabulce dimenze dat a tabulce faktů o prodeji.
- Vytvoření statistik pro nově načtená data
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Než začnete
Než začnete s tímto kurzem, stáhněte a nainstalujte nejnovější verzi aplikace SQL Server Management Studio (SSMS).
V tomto kurzu se předpokládá, že jste už vytvořili vyhrazený fond SQL z následujícího kurzu.
Poznámka
Pro účely tohoto kurzu se doporučuje použít alespoň dw1000c.
Vytvoření uživatele pro načítání dat
Účet správce serveru slouží k provádění operací správy a není vhodný pro spouštění dotazů na uživatelská data. Načítání dat je operace s vysokými nároky na paměť. Maximální počet paměti se definuje podle generace fondu SQL, který používáte, jednotek datového skladu a třídy prostředků.
Doporučujeme vytvořit účet a uživatele vyhrazeného pro načítání dat. Pak přidejte uživatele načítání do třídy prostředků, která umožňuje odpovídající maximální přidělení paměti.
Vzhledem k tomu, že jste aktuálně připojení jako správce serveru, můžete vytvářet přihlášení a uživatele. Pomocí těchto kroků vytvořte přihlášení a uživatele s názvem LoaderRC60. Pak přiřaďte uživatele ke třídě prostředků staticrc60 .
V nástroji SSMS klikněte pravým tlačítkem myši na master, aby se zobrazila rozevírací nabídka, a zvolte Nový dotaz. Otevře se nové okno dotazu.
V okně dotazu zadejte tyto příkazy T-SQL pro vytvoření přihlášení a uživatele s názvem LoaderRC60 a nahraďte vlastní heslo "a123STRONGpassword!".
CREATE LOGIN LoaderRC60 WITH PASSWORD = 'a123STRONGpassword!'; CREATE USER LoaderRC60 FOR LOGIN LoaderRC60;Klikněte na tlačítko Spustit.
Klikněte pravým tlačítkem na SampleDW a zvolte Nový dotaz. Otevře se nové okno dotazu.
Zadáním následujících příkazů T-SQL vytvořte uživatele databáze LoaderRC60 pro přihlášení LoaderRC60. Na druhém řádku se novému uživateli přidělí oprávnění CONTROL k novému datovému skladu. Tato oprávnění jsou podobná, jako kdybyste z uživatele udělali vlastníka databáze. Třetí řádek přidá nového uživatele jako člena
staticrc60třídy prostředků.CREATE USER LoaderRC60 FOR LOGIN LoaderRC60; GRANT CONTROL ON DATABASE::[SampleDW] to LoaderRC60; EXEC sp_addrolemember 'staticrc60', 'LoaderRC60';Klikněte na tlačítko Spustit.
Připojte se k serveru jako uživatel pro načítání
Prvním krokem k načtení dat je přihlášení jako LoaderRC60.
V Průzkumníku objektů klikněte na rozevírací nabídku Připojit a vyberte Databázový stroj. Zobrazí se dialogové okno Připojení k serveru.
Zadejte plně kvalifikovaný název serveru a jako přihlašovací jméno zadejte LoaderRC60 . Zadejte heslo pro LoaderRC60.
Klepněte na tlačítko Připojit.
Až bude připojení připravené, zobrazí se v Průzkumníku objektů dvě připojení k serveru. Jedno připojení jako ServerAdmin a jedno připojení jako LoaderRC60.
Vytváření externích tabulek a objektů
Jste připraveni zahájit proces načítání dat do nového datového skladu. Další informace o tom, jak získat data do služby Azure Blob Storage nebo je načíst přímo ze zdroje do fondu SQL, najdete v přehledu načítání.
Spuštěním následujících skriptů SQL zadejte informace o datech, která chcete načíst. Tyto informace zahrnují umístění dat, formát obsahu dat a definici tabulky pro data. Data se nacházejí v globálním objektu blob Azure.
V předchozí části jste se přihlásili k datovému skladu jako LoaderRC60. V nástroji SSMS klikněte pravým tlačítkem na SampleDW pod připojením LoaderRC60 a vyberte Nový dotaz. Zobrazí se nové okno dotazu.
Porovnejte své okno dotazu s předchozím obrázkem. Ověřte, že nové okno dotazu běží jako LoaderRC60 a provádí dotazy v databázi SampleDW. Toto okno dotazu použijte k provedení všech kroků načítání.
Vytvořte hlavní klíč pro databázi SampleDW. Pro každou databázi stačí vytvořit hlavní klíč jen jednou.
CREATE MASTER KEY;Spuštěním následujícího příkazu CREATE EXTERNAL DATA SOURCE definujte umístění objektu blob Azure. Jedná se o umístění údajů externích dovozců po celém světě. Pokud chcete spustit příkaz, který jste připojili do okna dotazu, zvýrazněte příkazy, které chcete spustit, a klikněte na Spustit.
CREATE EXTERNAL DATA SOURCE WWIStorage WITH ( TYPE = Hadoop, LOCATION = 'wasbs://wideworldimporters@sqldwholdata.blob.core.windows.net' );Spuštěním následujícího příkazu CREATE EXTERNAL FILE FORMAT T-SQL určete vlastnosti formátování a možnosti externího datového souboru. Tento příkaz určuje, že externí data jsou uložena jako text a hodnoty jsou odděleny znakem svislé roury (|).
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = '|', USE_TYPE_DEFAULT = FALSE ) );Spuštěním následujících příkazů CREATE SCHEMA vytvořte schéma pro formát externího souboru. Schéma ext poskytuje způsob, jak uspořádat externí tabulky, které chcete vytvořit. Schéma wwi uspořádá standardní tabulky, které budou obsahovat data.
CREATE SCHEMA ext; GO CREATE SCHEMA wwi;Vytvořte externí tabulky. Definice tabulek jsou uloženy v databázi, ale tabulky odkazují na data uložená v úložišti objektů blob v Azure. Spuštěním následujících příkazů T-SQL vytvořte několik externích tabulek, které odkazují na objekt blob Azure, který jste definovali dříve v externím zdroji dat.
CREATE EXTERNAL TABLE [ext].[dimension_City]( [City Key] [int] NOT NULL, [WWI City ID] [int] NOT NULL, [City] [nvarchar](50) NOT NULL, [State Province] [nvarchar](50) NOT NULL, [Country] [nvarchar](60) NOT NULL, [Continent] [nvarchar](30) NOT NULL, [Sales Territory] [nvarchar](50) NOT NULL, [Region] [nvarchar](30) NOT NULL, [Subregion] [nvarchar](30) NOT NULL, [Location] [nvarchar](76) NULL, [Latest Recorded Population] [bigint] NOT NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH (LOCATION='/v1/dimension_City/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_Customer] ( [Customer Key] [int] NOT NULL, [WWI Customer ID] [int] NOT NULL, [Customer] [nvarchar](100) NOT NULL, [Bill To Customer] [nvarchar](100) NOT NULL, [Category] [nvarchar](50) NOT NULL, [Buying Group] [nvarchar](50) NOT NULL, [Primary Contact] [nvarchar](50) NOT NULL, [Postal Code] [nvarchar](10) NOT NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH (LOCATION='/v1/dimension_Customer/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_Employee] ( [Employee Key] [int] NOT NULL, [WWI Employee ID] [int] NOT NULL, [Employee] [nvarchar](50) NOT NULL, [Preferred Name] [nvarchar](50) NOT NULL, [Is Salesperson] [bit] NOT NULL, [Photo] [varbinary](300) NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION='/v1/dimension_Employee/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_PaymentMethod] ( [Payment Method Key] [int] NOT NULL, [WWI Payment Method ID] [int] NOT NULL, [Payment Method] [nvarchar](50) NOT NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/dimension_PaymentMethod/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_StockItem]( [Stock Item Key] [int] NOT NULL, [WWI Stock Item ID] [int] NOT NULL, [Stock Item] [nvarchar](100) NOT NULL, [Color] [nvarchar](20) NOT NULL, [Selling Package] [nvarchar](50) NOT NULL, [Buying Package] [nvarchar](50) NOT NULL, [Brand] [nvarchar](50) NOT NULL, [Size] [nvarchar](20) NOT NULL, [Lead Time Days] [int] NOT NULL, [Quantity Per Outer] [int] NOT NULL, [Is Chiller Stock] [bit] NOT NULL, [Barcode] [nvarchar](50) NULL, [Tax Rate] [decimal](18, 3) NOT NULL, [Unit Price] [decimal](18, 2) NOT NULL, [Recommended Retail Price] [decimal](18, 2) NULL, [Typical Weight Per Unit] [decimal](18, 3) NOT NULL, [Photo] [varbinary](300) NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/dimension_StockItem/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_Supplier]( [Supplier Key] [int] NOT NULL, [WWI Supplier ID] [int] NOT NULL, [Supplier] [nvarchar](100) NOT NULL, [Category] [nvarchar](50) NOT NULL, [Primary Contact] [nvarchar](50) NOT NULL, [Supplier Reference] [nvarchar](20) NULL, [Payment Days] [int] NOT NULL, [Postal Code] [nvarchar](10) NOT NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/dimension_Supplier/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[dimension_TransactionType]( [Transaction Type Key] [int] NOT NULL, [WWI Transaction Type ID] [int] NOT NULL, [Transaction Type] [nvarchar](50) NOT NULL, [Valid From] [datetime2](7) NOT NULL, [Valid To] [datetime2](7) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/dimension_TransactionType/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_Movement] ( [Movement Key] [bigint] NOT NULL, [Date Key] [date] NOT NULL, [Stock Item Key] [int] NOT NULL, [Customer Key] [int] NULL, [Supplier Key] [int] NULL, [Transaction Type Key] [int] NOT NULL, [WWI Stock Item Transaction ID] [int] NOT NULL, [WWI Invoice ID] [int] NULL, [WWI Purchase Order ID] [int] NULL, [Quantity] [int] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_Movement/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_Order] ( [Order Key] [bigint] NOT NULL, [City Key] [int] NOT NULL, [Customer Key] [int] NOT NULL, [Stock Item Key] [int] NOT NULL, [Order Date Key] [date] NOT NULL, [Picked Date Key] [date] NULL, [Salesperson Key] [int] NOT NULL, [Picker Key] [int] NULL, [WWI Order ID] [int] NOT NULL, [WWI Backorder ID] [int] NULL, [Description] [nvarchar](100) NOT NULL, [Package] [nvarchar](50) NOT NULL, [Quantity] [int] NOT NULL, [Unit Price] [decimal](18, 2) NOT NULL, [Tax Rate] [decimal](18, 3) NOT NULL, [Total Excluding Tax] [decimal](18, 2) NOT NULL, [Tax Amount] [decimal](18, 2) NOT NULL, [Total Including Tax] [decimal](18, 2) NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_Order/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_Purchase] ( [Purchase Key] [bigint] NOT NULL, [Date Key] [date] NOT NULL, [Supplier Key] [int] NOT NULL, [Stock Item Key] [int] NOT NULL, [WWI Purchase Order ID] [int] NULL, [Ordered Outers] [int] NOT NULL, [Ordered Quantity] [int] NOT NULL, [Received Outers] [int] NOT NULL, [Package] [nvarchar](50) NOT NULL, [Is Order Finalized] [bit] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_Purchase/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_Sale] ( [Sale Key] [bigint] NOT NULL, [City Key] [int] NOT NULL, [Customer Key] [int] NOT NULL, [Bill To Customer Key] [int] NOT NULL, [Stock Item Key] [int] NOT NULL, [Invoice Date Key] [date] NOT NULL, [Delivery Date Key] [date] NULL, [Salesperson Key] [int] NOT NULL, [WWI Invoice ID] [int] NOT NULL, [Description] [nvarchar](100) NOT NULL, [Package] [nvarchar](50) NOT NULL, [Quantity] [int] NOT NULL, [Unit Price] [decimal](18, 2) NOT NULL, [Tax Rate] [decimal](18, 3) NOT NULL, [Total Excluding Tax] [decimal](18, 2) NOT NULL, [Tax Amount] [decimal](18, 2) NOT NULL, [Profit] [decimal](18, 2) NOT NULL, [Total Including Tax] [decimal](18, 2) NOT NULL, [Total Dry Items] [int] NOT NULL, [Total Chiller Items] [int] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_Sale/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_StockHolding] ( [Stock Holding Key] [bigint] NOT NULL, [Stock Item Key] [int] NOT NULL, [Quantity On Hand] [int] NOT NULL, [Bin Location] [nvarchar](20) NOT NULL, [Last Stocktake Quantity] [int] NOT NULL, [Last Cost Price] [decimal](18, 2) NOT NULL, [Reorder Level] [int] NOT NULL, [Target Stock Level] [int] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_StockHolding/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 ); CREATE EXTERNAL TABLE [ext].[fact_Transaction] ( [Transaction Key] [bigint] NOT NULL, [Date Key] [date] NOT NULL, [Customer Key] [int] NULL, [Bill To Customer Key] [int] NULL, [Supplier Key] [int] NULL, [Transaction Type Key] [int] NOT NULL, [Payment Method Key] [int] NULL, [WWI Customer Transaction ID] [int] NULL, [WWI Supplier Transaction ID] [int] NULL, [WWI Invoice ID] [int] NULL, [WWI Purchase Order ID] [int] NULL, [Supplier Invoice Number] [nvarchar](20) NULL, [Total Excluding Tax] [decimal](18, 2) NOT NULL, [Tax Amount] [decimal](18, 2) NOT NULL, [Total Including Tax] [decimal](18, 2) NOT NULL, [Outstanding Balance] [decimal](18, 2) NOT NULL, [Is Finalized] [bit] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( LOCATION ='/v1/fact_Transaction/', DATA_SOURCE = WWIStorage, FILE_FORMAT = TextFileFormat, REJECT_TYPE = VALUE, REJECT_VALUE = 0 );V Průzkumníku objektů rozbalte SampleDW a zobrazte seznam externích tabulek, které jste vytvořili.
Načtení dat do fondu SQL
Tato část používá externí tabulky, které jste definovali k načtení ukázkových dat z Azure Blob do fondu SQL.
Poznámka
V tomto kurzu se data načítají přímo do konečné tabulky. V produkčním prostředí obvykle použijete příkaz CREATE TABLE AS SELECT pro načtení dat do pracovní tabulky. Když jsou data v pracovní tabulce, můžete provést všechny potřebné transformace. Pokud chcete data v přechodné tabulce připojit k produkční tabulce, můžete použít příkaz INSERT...SELECT. Další informace naleznete v tématu Vložení dat do produkční tabulky.
Skript pomocí příkazu T-SQL CREATE TABLE AS SELECT (CTAS) načte data z Azure Storage Blob do nových tabulek ve vašem datovém skladu. CTAS vytvoří novou tabulku na základě výsledků příkazu select. Nová tabulka obsahuje stejné sloupce a datové typy jako výsledky příkazu select. Když příkaz select vybere z externí tabulky, data se naimportují do relační tabulky v datovém skladu.
Tento skript nenačte data do tabulek wwi.dimension_Date a wwi.fact_Sale. Tyto tabulky se vygenerují v pozdějším kroku, aby tabulky měly velký počet řádků.
Spuštěním následujícího skriptu načtěte data do nových tabulek ve vašem datovém skladu.
CREATE TABLE [wwi].[dimension_City] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_City] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_City]') ; CREATE TABLE [wwi].[dimension_Customer] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_Customer] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_Customer]') ; CREATE TABLE [wwi].[dimension_Employee] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_Employee] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_Employee]') ; CREATE TABLE [wwi].[dimension_PaymentMethod] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_PaymentMethod] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_PaymentMethod]') ; CREATE TABLE [wwi].[dimension_StockItem] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_StockItem] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_StockItem]') ; CREATE TABLE [wwi].[dimension_Supplier] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_Supplier] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_Supplier]') ; CREATE TABLE [wwi].[dimension_TransactionType] WITH ( DISTRIBUTION = REPLICATE, CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[dimension_TransactionType] OPTION (LABEL = 'CTAS : Load [wwi].[dimension_TransactionType]') ; CREATE TABLE [wwi].[fact_Movement] WITH ( DISTRIBUTION = HASH([Movement Key]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_Movement] OPTION (LABEL = 'CTAS : Load [wwi].[fact_Movement]') ; CREATE TABLE [wwi].[fact_Order] WITH ( DISTRIBUTION = HASH([Order Key]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_Order] OPTION (LABEL = 'CTAS : Load [wwi].[fact_Order]') ; CREATE TABLE [wwi].[fact_Purchase] WITH ( DISTRIBUTION = HASH([Purchase Key]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_Purchase] OPTION (LABEL = 'CTAS : Load [wwi].[fact_Purchase]') ; CREATE TABLE [wwi].[seed_Sale] WITH ( DISTRIBUTION = HASH([WWI Invoice ID]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_Sale] OPTION (LABEL = 'CTAS : Load [wwi].[seed_Sale]') ; CREATE TABLE [wwi].[fact_StockHolding] WITH ( DISTRIBUTION = HASH([Stock Holding Key]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_StockHolding] OPTION (LABEL = 'CTAS : Load [wwi].[fact_StockHolding]') ; CREATE TABLE [wwi].[fact_Transaction] WITH ( DISTRIBUTION = HASH([Transaction Key]), CLUSTERED COLUMNSTORE INDEX ) AS SELECT * FROM [ext].[fact_Transaction] OPTION (LABEL = 'CTAS : Load [wwi].[fact_Transaction]') ;Zobrazte data během načítání. Načítáte několik GB dat a komprimujete je do vysoce výkonných indexů sloupcového úložiště. Otevřete nové okno dotazu v sampleDW a spuštěním následujícího dotazu zobrazte stav načtení. Po spuštění dotazu si dejte kávu a občerstvení, zatímco SQL fond vykonává náročnou práci.
SELECT r.command, s.request_id, r.status, count(distinct input_name) as nbr_files, sum(s.bytes_processed)/1024/1024/1024 as gb_processed FROM sys.dm_pdw_exec_requests r INNER JOIN sys.dm_pdw_dms_external_work s ON r.request_id = s.request_id WHERE r.[label] = 'CTAS : Load [wwi].[dimension_City]' OR r.[label] = 'CTAS : Load [wwi].[dimension_Customer]' OR r.[label] = 'CTAS : Load [wwi].[dimension_Employee]' OR r.[label] = 'CTAS : Load [wwi].[dimension_PaymentMethod]' OR r.[label] = 'CTAS : Load [wwi].[dimension_StockItem]' OR r.[label] = 'CTAS : Load [wwi].[dimension_Supplier]' OR r.[label] = 'CTAS : Load [wwi].[dimension_TransactionType]' OR r.[label] = 'CTAS : Load [wwi].[fact_Movement]' OR r.[label] = 'CTAS : Load [wwi].[fact_Order]' OR r.[label] = 'CTAS : Load [wwi].[fact_Purchase]' OR r.[label] = 'CTAS : Load [wwi].[fact_StockHolding]' OR r.[label] = 'CTAS : Load [wwi].[fact_Transaction]' GROUP BY r.command, s.request_id, r.status ORDER BY nbr_files desc, gb_processed desc;Zobrazte všechny systémové dotazy.
SELECT * FROM sys.dm_pdw_exec_requests;Oceňte, že jsou vaše data krásně načtena do datového skladu.
Vytvoření tabulek a postupů pro generování tabulek Date a Sales
Tato část vytvoří tabulky wwi.dimension_Date a wwi.fact_Sale. Vytvoří také uložené procedury, které mohou generovat miliony řádků v tabulkách wwi.dimension_Date a wwi.fact_Sale.
Vytvořte tabulky dimension_Date a fact_Sale.
CREATE TABLE [wwi].[dimension_Date] ( [Date] [datetime] NOT NULL, [Day Number] [int] NOT NULL, [Day] [nvarchar](10) NOT NULL, [Month] [nvarchar](10) NOT NULL, [Short Month] [nvarchar](3) NOT NULL, [Calendar Month Number] [int] NOT NULL, [Calendar Month Label] [nvarchar](20) NOT NULL, [Calendar Year] [int] NOT NULL, [Calendar Year Label] [nvarchar](10) NOT NULL, [Fiscal Month Number] [int] NOT NULL, [Fiscal Month Label] [nvarchar](20) NOT NULL, [Fiscal Year] [int] NOT NULL, [Fiscal Year Label] [nvarchar](10) NOT NULL, [ISO Week Number] [int] NOT NULL ) WITH ( DISTRIBUTION = REPLICATE, CLUSTERED INDEX ([Date]) ); CREATE TABLE [wwi].[fact_Sale] ( [Sale Key] [bigint] IDENTITY(1,1) NOT NULL, [City Key] [int] NOT NULL, [Customer Key] [int] NOT NULL, [Bill To Customer Key] [int] NOT NULL, [Stock Item Key] [int] NOT NULL, [Invoice Date Key] [date] NOT NULL, [Delivery Date Key] [date] NULL, [Salesperson Key] [int] NOT NULL, [WWI Invoice ID] [int] NOT NULL, [Description] [nvarchar](100) NOT NULL, [Package] [nvarchar](50) NOT NULL, [Quantity] [int] NOT NULL, [Unit Price] [decimal](18, 2) NOT NULL, [Tax Rate] [decimal](18, 3) NOT NULL, [Total Excluding Tax] [decimal](18, 2) NOT NULL, [Tax Amount] [decimal](18, 2) NOT NULL, [Profit] [decimal](18, 2) NOT NULL, [Total Including Tax] [decimal](18, 2) NOT NULL, [Total Dry Items] [int] NOT NULL, [Total Chiller Items] [int] NOT NULL, [Lineage Key] [int] NOT NULL ) WITH ( DISTRIBUTION = HASH ( [WWI Invoice ID] ), CLUSTERED COLUMNSTORE INDEX )Vytvořte [wwi].[InitialSalesDataPopulation] pro zvýšení počtu řádků v [wwi].[seed_Sale] na osmkrát.
CREATE PROCEDURE [wwi].[InitialSalesDataPopulation] AS BEGIN INSERT INTO [wwi].[seed_Sale] ( [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] ) SELECT [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] FROM [wwi].[seed_Sale] INSERT INTO [wwi].[seed_Sale] ( [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] ) SELECT [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] FROM [wwi].[seed_Sale] INSERT INTO [wwi].[seed_Sale] ( [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] ) SELECT [Sale Key], [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], [Package], [Quantity], [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], [Profit], [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] FROM [wwi].[seed_Sale] ENDVytvořte tuto uloženou proceduru, která naplní řádky do wwi.dimension_Date.
CREATE PROCEDURE [wwi].[PopulateDateDimensionForYear] @Year [int] AS BEGIN IF OBJECT_ID('tempdb..#month', 'U') IS NOT NULL DROP TABLE #month CREATE TABLE #month ( monthnum int, numofdays int ) WITH ( DISTRIBUTION = ROUND_ROBIN, heap ) INSERT INTO #month SELECT 1, 31 UNION SELECT 2, CASE WHEN (@YEAR % 4 = 0 AND @YEAR % 100 <> 0) OR @YEAR % 400 = 0 THEN 29 ELSE 28 END UNION SELECT 3,31 UNION SELECT 4,30 UNION SELECT 5,31 UNION SELECT 6,30 UNION SELECT 7,31 UNION SELECT 8,31 UNION SELECT 9,30 UNION SELECT 10,31 UNION SELECT 11,30 UNION SELECT 12,31 IF OBJECT_ID('tempdb..#days', 'U') IS NOT NULL DROP TABLE #days CREATE TABLE #days (days int) WITH (DISTRIBUTION = ROUND_ROBIN, HEAP) INSERT INTO #days SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19 UNION SELECT 20 UNION SELECT 21 UNION SELECT 22 UNION SELECT 23 UNION SELECT 24 UNION SELECT 25 UNION SELECT 26 UNION SELECT 27 UNION SELECT 28 UNION SELECT 29 UNION SELECT 30 UNION SELECT 31 INSERT [wwi].[dimension_Date] ( [Date], [Day Number], [Day], [Month], [Short Month], [Calendar Month Number], [Calendar Month Label], [Calendar Year], [Calendar Year Label], [Fiscal Month Number], [Fiscal Month Label], [Fiscal Year], [Fiscal Year Label], [ISO Week Number] ) SELECT CAST(CAST(monthnum AS VARCHAR(2)) + '/' + CAST([days] AS VARCHAR(3)) + '/' + CAST(@year AS CHAR(4)) AS DATE) AS [Date] ,DAY(CAST(CAST(monthnum AS VARCHAR(2)) + '/' + CAST([days] AS VARCHAR(3)) + '/' + CAST(@year AS CHAR(4)) AS DATE)) AS [Day Number] ,CAST(DATENAME(day, CAST(CAST(monthnum AS VARCHAR(2)) + '/' + CAST([days] AS VARCHAR(3)) + '/' + CAST(@year AS CHAR(4)) AS DATE)) AS NVARCHAR(10)) AS [Day] ,CAST(DATENAME(month, CAST(CAST(monthnum AS VARCHAR(2)) + '/' + CAST([days] AS VARCHAR(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS nvarchar(10)) AS [Month] ,CAST(SUBSTRING(DATENAME(month, CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)), 1, 3) AS nvarchar(3)) AS [Short Month] ,MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS [Calendar Month Number] ,CAST(N'CY' + CAST(YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS nvarchar(4)) + N'-' + SUBSTRING(DATENAME(month, CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)), 1, 3) AS nvarchar(10)) AS [Calendar Month Label] ,YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS [Calendar Year] ,CAST(N'CY' + CAST(YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS nvarchar(4)) AS nvarchar(10)) AS [Calendar Year Label] ,CASE WHEN MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) IN (11, 12) THEN MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) - 10 ELSE MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) + 2 END AS [Fiscal Month Number] ,CAST(N'FY' + CAST(CASE WHEN MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) IN (11, 12) THEN YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) + 1 ELSE YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) END AS nvarchar(4)) + N'-' + SUBSTRING(DATENAME(month, CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)), 1, 3) AS nvarchar(20)) AS [Fiscal Month Label] ,CASE WHEN MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) IN (11, 12) THEN YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) + 1 ELSE YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) END AS [Fiscal Year] ,CAST(N'FY' + CAST(CASE WHEN MONTH(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) IN (11, 12) THEN YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) + 1 ELSE YEAR(CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE))END AS nvarchar(4)) AS nvarchar(10)) AS [Fiscal Year Label] , DATEPART(ISO_WEEK, CAST(CAST(monthnum as varchar(2)) + '/' + CAST([days] as varchar(3)) + '/' + CAST(@year as char(4)) AS DATE)) AS [ISO Week Number] FROM #month m CROSS JOIN #days d WHERE d.days <= m.numofdays DROP table #month; DROP table #days; END;Vytvořte tento postup, který naplní tabulky wwi.dimension_Date a wwi.fact_Sale. Volá [wwi].[PopulateDateDimensionForYear] k naplnění wwi.dimension_Date.
CREATE PROCEDURE [wwi].[Configuration_PopulateLargeSaleTable] @EstimatedRowsPerDay [bigint],@Year [int] AS BEGIN SET NOCOUNT ON; SET XACT_ABORT ON; EXEC [wwi].[PopulateDateDimensionForYear] @Year; DECLARE @OrderCounter bigint = 0; DECLARE @NumberOfSalesPerDay bigint = @EstimatedRowsPerDay; DECLARE @DateCounter date; DECLARE @StartingSaleKey bigint; DECLARE @MaximumSaleKey bigint = (SELECT MAX([Sale Key]) FROM wwi.seed_Sale); DECLARE @MaxDate date; SET @MaxDate = (SELECT MAX([Invoice Date Key]) FROM wwi.fact_Sale) IF ( @MaxDate < CAST(@YEAR AS CHAR(4)) + '1231') AND (@MaxDate > CAST(@YEAR AS CHAR(4)) + '0101') SET @DateCounter = @MaxDate ELSE SET @DateCounter= CAST(@Year as char(4)) + '0101'; PRINT 'Targeting ' + CAST(@NumberOfSalesPerDay AS varchar(20)) + ' sales per day.'; DECLARE @OutputCounter varchar(20); DECLARE @variance DECIMAL(18,10); DECLARE @VariantNumberOfSalesPerDay BIGINT; WHILE @DateCounter < CAST(@YEAR AS CHAR(4)) + '1231' BEGIN SET @OutputCounter = CONVERT(varchar(20), @DateCounter, 112); RAISERROR(@OutputCounter, 0, 1); SET @variance = (SELECT RAND() * 10)*.01 + .95 SET @VariantNumberOfSalesPerDay = FLOOR(@NumberOfSalesPerDay * @variance) SET @StartingSaleKey = @MaximumSaleKey - @VariantNumberOfSalesPerDay - FLOOR(RAND() * 20000); SET @OrderCounter = 0; INSERT [wwi].[fact_Sale] ( [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], [Invoice Date Key], [Delivery Date Key], [Salesperson Key], [WWI Invoice ID], [Description], Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], Profit, [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] ) SELECT TOP(@VariantNumberOfSalesPerDay) [City Key], [Customer Key], [Bill To Customer Key], [Stock Item Key], @DateCounter, DATEADD(day, 1, @DateCounter), [Salesperson Key], [WWI Invoice ID], [Description], Package, Quantity, [Unit Price], [Tax Rate], [Total Excluding Tax], [Tax Amount], Profit, [Total Including Tax], [Total Dry Items], [Total Chiller Items], [Lineage Key] FROM [wwi].[seed_Sale] WHERE --[Sale Key] > @StartingSaleKey and /* IDENTITY DOES NOT WORK THE SAME IN SQLDW AND CAN'T USE THIS METHOD FOR VARIANT */ [Invoice Date Key] >=cast(@YEAR AS CHAR(4)) + '-01-01' ORDER BY [Sale Key]; SET @DateCounter = DATEADD(day, 1, @DateCounter); END; END;
Generování milionů řádků
Pomocí uložených procedur, které jste vytvořili, vygenerujte miliony řádků v tabulce wwi.fact_Sale a odpovídající data v tabulce wwi.dimension_Date.
Pro spuštění tohoto postupu naplníte [wwi].[seed_Sale] pomocí více řádků.
EXEC [wwi].[InitialSalesDataPopulation]Spusťte tento postup, abyste naplnili wwi.fact_Sale 100 000 řádky denně pro každý den v roce 2000.
EXEC [wwi].[Configuration_PopulateLargeSaleTable] 100000, 2000Generování dat v předchozím kroku může chvíli trvat, protože postupuje během roku. Pokud chcete zjistit, kdy je aktuální proces zapnutý, otevřete nový dotaz a spusťte tento příkaz SQL:
SELECT MAX([Invoice Date Key]) FROM wwi.fact_Sale;Spuštěním následujícího příkazu zobrazte využité místo.
EXEC sp_spaceused N'wwi.fact_Sale';
Naplnění replikované mezipaměti tabulek
Fond SQL replikuje tabulku ukládáním dat do mezipaměti do každého výpočetního uzlu. Mezipaměť se naplní při spuštění dotazu v tabulce. Proto první dotaz na replikovanou tabulku může vyžadovat další čas pro naplnění mezipaměti. Po naplnění mezipaměti budou dotazy na replikované tabulky rychlejší.
Spuštěním těchto dotazů SQL naplníte mezipaměť replikované tabulky na výpočetních uzlech.
SELECT TOP 1 * FROM [wwi].[dimension_City];
SELECT TOP 1 * FROM [wwi].[dimension_Customer];
SELECT TOP 1 * FROM [wwi].[dimension_Date];
SELECT TOP 1 * FROM [wwi].[dimension_Employee];
SELECT TOP 1 * FROM [wwi].[dimension_PaymentMethod];
SELECT TOP 1 * FROM [wwi].[dimension_StockItem];
SELECT TOP 1 * FROM [wwi].[dimension_Supplier];
SELECT TOP 1 * FROM [wwi].[dimension_TransactionType];
Vytvoření statistik pro nově načtená data
Pokud chcete dosáhnout vysokého výkonu dotazů, je důležité po prvním načtení vytvořit statistiky pro každý sloupec každé tabulky. Je také důležité aktualizovat statistiky po podstatných změnách dat.
Vytvořte tuto uloženou proceduru, která aktualizuje statistiky všech sloupců všech tabulek.
CREATE PROCEDURE [dbo].[prc_sqldw_create_stats] ( @create_type tinyint -- 1 default 2 Fullscan 3 Sample , @sample_pct tinyint ) AS IF @create_type IS NULL BEGIN SET @create_type = 1; END; IF @create_type NOT IN (1,2,3) BEGIN THROW 151000,'Invalid value for @stats_type parameter. Valid range 1 (default), 2 (fullscan) or 3 (sample).',1; END; IF @sample_pct IS NULL BEGIN; SET @sample_pct = 20; END; IF OBJECT_ID('tempdb..#stats_ddl') IS NOT NULL BEGIN; DROP TABLE #stats_ddl; END; CREATE TABLE #stats_ddl WITH ( DISTRIBUTION = HASH([seq_nmbr]) , LOCATION = USER_DB ) AS WITH T AS ( SELECT t.[name] AS [table_name] , s.[name] AS [table_schema_name] , c.[name] AS [column_name] , c.[column_id] AS [column_id] , t.[object_id] AS [object_id] , ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS [seq_nmbr] FROM sys.[tables] t JOIN sys.[schemas] s ON t.[schema_id] = s.[schema_id] JOIN sys.[columns] c ON t.[object_id] = c.[object_id] LEFT JOIN sys.[stats_columns] l ON l.[object_id] = c.[object_id] AND l.[column_id] = c.[column_id] AND l.[stats_column_id] = 1 LEFT JOIN sys.[external_tables] e ON e.[object_id] = t.[object_id] WHERE l.[object_id] IS NULL AND e.[object_id] IS NULL -- not an external table ) SELECT [table_schema_name] , [table_name] , [column_name] , [column_id] , [object_id] , [seq_nmbr] , CASE @create_type WHEN 1 THEN CAST('CREATE STATISTICS '+QUOTENAME('stat_'+table_schema_name+ '_' + table_name + '_'+column_name)+' ON '+QUOTENAME(table_schema_name)+'.'+QUOTENAME(table_name)+'('+QUOTENAME(column_name)+')' AS VARCHAR(8000)) WHEN 2 THEN CAST('CREATE STATISTICS '+QUOTENAME('stat_'+table_schema_name+ '_' + table_name + '_'+column_name)+' ON '+QUOTENAME(table_schema_name)+'.'+QUOTENAME(table_name)+'('+QUOTENAME(column_name)+') WITH FULLSCAN' AS VARCHAR(8000)) WHEN 3 THEN CAST('CREATE STATISTICS '+QUOTENAME('stat_'+table_schema_name+ '_' + table_name + '_'+column_name)+' ON '+QUOTENAME(table_schema_name)+'.'+QUOTENAME(table_name)+'('+QUOTENAME(column_name)+') WITH SAMPLE '+CONVERT(varchar(4),@sample_pct)+' PERCENT' AS VARCHAR(8000)) END AS create_stat_ddl FROM T ; DECLARE @i INT = 1 , @t INT = (SELECT COUNT(*) FROM #stats_ddl) , @s NVARCHAR(4000) = N'' ; WHILE @i <= @t BEGIN SET @s=(SELECT create_stat_ddl FROM #stats_ddl WHERE seq_nmbr = @i); PRINT @s EXEC sp_executesql @s SET @i+=1; END DROP TABLE #stats_ddl;Spuštěním tohoto příkazu vytvořte statistiky pro všechny sloupce všech tabulek v datovém skladu.
EXEC [dbo].[prc_sqldw_create_stats] 1, NULL;
Vyčistěte zdroje
Účtují se vám výpočetní prostředky a data, která načtete do svého datového skladu. Ta se účtují zvlášť.
Postupujte podle těchto kroků, abyste vyčistili prostředky, jak si přejete.
Přihlaste se k webu Azure Portal a klikněte na datový sklad.
Pokud chcete zachovat data v úložišti, můžete pozastavit výpočetní prostředky v době, kdy datový sklad nepoužíváte. Pozastavením výpočetních prostředků se vám budou účtovat poplatky jenom za úložiště dat a výpočetní prostředky můžete obnovit vždy, když budete připraveni pracovat s daty. Pokud chcete pozastavit výpočetní prostředky, klikněte na tlačítko Pozastavit . Po pozastavení datového skladu se zobrazí tlačítko Start . Pokud chcete pokračovat ve výpočetním výkonu, klikněte na Start.
Pokud chcete zamezit budoucím poplatkům, můžete datový sklad odstranit. Pokud chcete datový sklad odebrat, takže se vám nebudou účtovat poplatky za výpočetní prostředky nebo úložiště, klikněte na Odstranit.
Chcete-li odebrat server, který jste vytvořili, klepněte na tlačítko sample-svr.database.windows.net na předchozím obrázku a potom klepněte na tlačítko Odstranit. Při odstraňování serveru buďte opatrní, protože odstraněním serveru se odstraní všechny databáze přiřazené k serveru.
Chcete-li odebrat skupinu prostředků, klepněte na příkaz SampleRG a potom klepněte na tlačítko Odstranit skupinu prostředků.
Další kroky
V tomto kurzu jste zjistili, jak vytvořit datový sklad a vytvořit uživatele pro načítání dat. Vytvořili jste externí tabulky, které definují strukturu dat uložených v objektu blob služby Azure Storage, a pak jste použili příkaz PolyBase CREATE TABLE AS SELECT k načtení dat do datového skladu.
Udělali jste tyto věci:
- Vytvoření datového skladu pomocí fondu SQL na webu Azure Portal
- Nastavte pravidlo brány firewall na úrovni serveru v Azure Portal
- Připojeno k fondu SQL pomocí SSMS
- Vytvoření uživatele určeného pro načítání dat
- Vytvoření externích tabulek pro data v objektu blob služby Azure Storage
- Použití příkazu CTAS T-SQL k načtení dat do datového skladu
- Zobrazil se průběh načítání dat.
- Vytvořené statistiky pro nově načtená data
V přehledu vývoje se dozvíte, jak migrovat existující databázi do fondu Azure Synapse SQL.