Kör T-SQL-kod i Python-notebooks i Fabric

Blandningen av T-SQL och Python i moderna dataarbetsflöden erbjuder ett kraftfullt och flexibelt tillvägagångssätt som blandar styrkan i båda språken. SQL är fortfarande det mest effektiva och läsbara sättet att fråga, filtrera och koppla strukturerade data, medan Python utmärker sig för datatransformering, statistisk analys, maskininlärning och visualisering. Genom att kombinera T-SQL och Python kan datatekniker använda det bästa av två världar, vilket gör det möjligt för dem att skapa robusta pipelines som är effektiva, underhållsbara och kan hantera komplexa databehandlingsuppgifter.

I Microsoft Fabric Python-notebook-filer introducerade vi en ny funktion med namnet T-SQL Magic Command. Med den här funktionen kan du köra T-SQL-kod direkt i Python-notebook-filer med fullständig syntaxmarkering och kodkomplettering. Det innebär att du kan skriva T-SQL-kod i en Python-notebook-fil och att den körs som om den vore en T-SQL-cell. Den här funktionen är användbar för datatekniker som vill använda kraften i T-SQL medan de fortfarande använder flexibiliteten i Python-notebook-filer.

I den här artikeln utforskar vi det magiska T-SQL-kommandot i Microsoft Fabric-notebook-filer. Vi går igenom hur du aktiverar det här kommandot, anger vilket lager som ska användas och hur du binder resultatet av T-SQL-frågor till Python-variabler.

Den här funktionen är tillgänglig för Fabric Python-notebook-filer. Du måste ange språket till Python i notebook-filen och celltypen till T-SQL.

Important

Den här funktionen är i förhandsversion.

Använda ett magiskt T-SQL-kommando för att fråga Fabric-informationslagret

Om du vill aktivera det magiska T-SQL-kommandot i din Fabric-notebook-fil måste du ange det %%tsql magiska kommandot i början av cellen. Det här kommandot anger att koden i cellen ska behandlas som T-SQL-kod.

I det här exemplet använder vi T-SQL magic-commandot för att köra frågor mot ett Fabric Data Warehouse. Kommandot tar följande parametrar:

  • Parametern -artifact anger namnet på informationslagret som ska användas. T-SQL-koden i cellen körs mot det angivna informationslagret i Fabric.
  • Parametern -type anger typen av fabric-objekt. För Fabric Data Warehouse använder du Warehouse.
  • Parametern -bind anger namnet på variabeln som T-SQL-frågans resultat ska bindas till. I följande exempel lagras resultatet av frågan i en Python-variabel med namnet df1. Om du behöver tillämpa en transformering på df1-variabeln kan du göra det med hjälp av Python-kod i nästa cell. Parametern -bind är valfri, men vi rekommenderar att du binder resultatet av T-SQL-frågan till en Python-variabel. Med den här parametern kan du enkelt manipulera och analysera resultaten med hjälp av Python-kod.
  • Parametern -workspace är valfri och används om lagret finns på en annan arbetsyta. Utan denna parameter använder notebooken den aktuella arbetsytan.
%%tsql -artifact dw1 -type Warehouse -bind df1
SELECT TOP (10) [GeographyID],
            [ZipCodeBKey],
            [County],
            [City],
            [State],
            [Country],
            [ZipCode]
FROM [dw1].[dbo].[Geography]

Skärmbild som visar det magiska kommandot tsql med informationslagret.

Om både parametrarna -artifact och -type utelämnas använder notebooken standardlagerobjektet i den aktuella notebooken.

Använda T-SQL Magic-kommandot för att fråga SQL-databasen

Du kan också använda det magiska T-SQL-kommandot för att köra frågor mot en SQL-databas i Fabric. Syntaxen liknar frågespråket för ett datalager, men parametern -type måste vara inställd på SQLDatabase. Parametern -bind anger namnet på variabeln som T-SQL-frågans resultat ska bindas till.

I följande exempel lagras resultatet av frågan i en Python-variabel med namnet df2.

%%tsql -artifact sqldb1 -type SQLDatabase -bind df2
SELECT TOP (10) [AddressID]
      ,[AddressLine1]
      ,[AddressLine2]
      ,[City]
      ,[StateProvince]
      ,[CountryRegion]
      ,[PostalCode]
      ,[rowguid]
      ,[ModifiedDate]
  FROM [SalesLT].[Address];

Skärmbild som visar ett magiskt tsql-kommando med sql database.

Använda ett magiskt T-SQL-kommando för att anropa slutpunkt för SQL-analys i lakehouse

Du kan också använda T-SQL magic-kommandot för att köra frågor mot en SQL-analysslutpunkt. Syntaxen liknar frågespråket för ett datalager, men parametern -type måste vara inställd på Lakehouse. Parametern -bind anger namnet på variabeln som T-SQL-frågans resultat ska bindas till.

I följande exempel lagras resultatet av frågan i en Python-variabel med namnet df3.

%%tsql -artifact lakehouse1 -type Lakehouse -bind df3
SELECT TOP (10) [ProductID],
      [Name],
      [ProductNumber],
      [Color],
      [StandardCost],
      [ListPrice]
FROM [lakehouse1].[dbo].[Product];

Använda T-SQL-magiskt kommando som linjemagi

I stället för att köra T-SQL i en fullständig kodcell med %%tsqlkan du köra T-SQL på en enda rad med %tsql som linjemagi. Du måste dock först upprätta en sessionsanslutning.

Important

Innan du använder %tsql radmagi måste du köra ett %%tsql cellmagikommando med parametern -session för att initiera den magiska SQL-kontexten. Om du kör %tsql utan den här konfigurationen resulterar det i en SQLMagicContextInitializationException.

Förutsättningar för linjemagi

  1. Initiera sessionen: I en cell som använder det %%tsql magiska kommandot tar du med parametern -session för att upprätta anslutningskontexten. Till exempel:

    %%tsql -artifact ContosoDWH -type Warehouse -session
    SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
    
  2. Använd linjemagi: När du har initierat sessionen kan du använda %tsql i följande celler. Linjemagi använder anslutningen som upprättades i steg 1 utan att du behöver ange -artifact och -type igen. Till exempel:

    df = %tsql SELECT TOP(10) * FROM [ContosoDWH].[dbo].[Geography];
    

Skärmbild som visar det magiska kommandot tsql med radmagi.

Referera till Python-variabler i T-SQL

Du kan också referera till Python-variabler i T-SQL-kod. Om du vill göra det använder du symbolen {} följt av namnet på Python-variabeln. Om du till exempel har en Python-variabel med namnet countkan du referera till den enligt följande i din T-SQL-kod:

count = 10

df = %tsql SELECT TOP({count}) * FROM [dw1].[dbo].[Geography];

Skärmbild som visar det magiska kommandot tsql med referensvariabeln python.

Om du vill se den fullständiga syntaxen använder du %tsql? kommandot . Det här kommandot visar hjälpinformationen för det magiska T-SQL-kommandot, inklusive tillgängliga parametrar och deras beskrivningar.

Note

Du kan köra fullständiga DML- och DDL-kommandon mot informationslagret eller SQL-databasen, men endast skrivskyddade frågor mot lakehouse SQL-slutpunkten.

Mer information om Fabric-notebook-filer finns i följande artiklar.