Χρήση στηλών IDENTITY σε Fabric αποθήκη δεδομένων

Ισχύει για:✅ Warehouse στο Microsoft Fabric

Αυτό το εκπαιδευτικό βοήθημα εξηγεί πώς μπορείτε να χρησιμοποιήσετε τις στήλες IDENTITY στο Fabric αποθήκη δεδομένων για τη δημιουργία και τη διαχείριση υποκατάστατων κλειδιών. Μαθαίνετε πώς να δημιουργείτε πίνακες με στήλες ταυτότητας, να εισάγετε δεδομένα, να εισάγετε ρητές τιμές με IDENTITY_INSERTτο και να επαναπροσδιορίζετε την περιοχή ταυτοτήτων με DBCC CHECKIDENTτο .

Προαπαιτούμενα στοιχεία

  • Πρόσβαση σε ένα είδος Αποθήκης σε έναν χώρο εργασίας με δικαιώματα Συμβάλλοντα ή υψηλότερα.
  • Ένα εργαλείο ερωτημάτων. Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί το πρόγραμμα επεξεργασίας ερωτημάτων SQL στην πύλη Microsoft Fabric, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε εργαλείο ερωτημάτων T-SQL.
  • Μια βασική κατανόηση της T-SQL.

Τι είναι η στήλη ΤΑΥΤΟΤΗΤΑ;

Μια IDENTITY στήλη είναι μια αριθμητική στήλη που δημιουργεί αυτόματα μοναδικές τιμές για νέες γραμμές. Αυτή η συμπεριφορά το καθιστά ιδανικό για την υλοποίηση υποκατάστατων κλειδιών, επειδή κάθε σειρά λαμβάνει ένα μοναδικό αναγνωριστικό χωρίς μη αυτόματη εισαγωγή.

Δημιουργία στήλης IDENTITY

Για να ορίσετε μια IDENTITY στήλη, καθορίστε τη IDENTITY λέξη-κλειδί στον ορισμό στήλης της σύνταξης CREATE TABLE T-SQL:

CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
    [column_name] BIGINT IDENTITY,
    [ ,... n ],
    -- Other columns here
);

Δημιουργία πίνακα με στήλη IDENTITY

Σε αυτό το πρόγραμμα εκμάθησης, δημιουργείτε μια απλούστερη έκδοση του Trip πίνακα από το ανοιχτό σύνολο δεδομένων NY Taxi και προσθέτετε μια TripIDIDENTITY στήλη. Κάθε νέα γραμμή λαμβάνει μια TripID τιμή που είναι μοναδική στον πίνακα.

  1. Ορισμός πίνακα με στήλη IDENTITY :

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Χρησιμοποιήστε το COPY INTO για να απορροφήσετε δεδομένα στον πίνακα. Όταν χρησιμοποιείτε COPY INTO μια IDENTITY στήλη, δώστε τη λίστα στηλών και αντιστοιχίστε την σε στήλες στα δεδομένα προέλευσης.

     COPY INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     FROM 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=2013/puMonth=1/*.parquet'
     WITH( FILE_TYPE = 'PARQUET');
    
  3. Κάντε προεπισκόπηση των δεδομένων και των τιμών που έχουν αντιστοιχιστεί στη IDENTITY στήλη:

    SELECT TOP 10 *
    FROM Trip;
    

    Η έξοδος περιλαμβάνει την τιμή που δημιουργείται TripID αυτόματα για κάθε σειρά.

    Στιγμιότυπο οθόνης των αποτελεσμάτων του ερωτήματος που εμφανίζει έναν πίνακα με τις πρώτες 10 γραμμές ενός συνόλου δεδομένων διαδρομής ταξί.

    Σημαντικό

    Οι τιμές σας ενδέχεται να διαφέρουν από τις τιμές σε αυτό το άρθρο. IDENTITY Οι στήλες παράγουν τιμές που είναι εγγυημένα μοναδικές, αλλά οι τιμές δεν είναι απαραίτητα διαδοχικές ή ταξινομημένες και μπορεί να προκύψουν κενά.

  4. Χρήση INSERT INTO για πρόσληψη νέων γραμμών:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Μια λίστα στηλών είναι προαιρετική με INSERT INTO. Όταν παρέχετε μία, καθορίστε τα ονόματα όλων των στηλών για τις οποίες παρέχετε δεδομένα εισόδου, εκτός από τη IDENTITY στήλη:

     INSERT INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     VALUES ('2026-01-01T08:15:00', '2013-01-01T08:42:00', 2, 6.8, 24.5, 30.0);
    
  6. Ελέγξτε τις γραμμές που έχουν εισαχθεί:

     SELECT *
     FROM dbo.Trip
     WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';    
    

    Παρατηρήστε τις τιμές που έχουν εκχωρηθεί στις νέες γραμμές:

    Στιγμιότυπο οθόνης ενός πίνακα με δύο γραμμές και έξι στήλες που εμφανίζουν δεδομένα διαδρομής με ταξί.

Εισαγωγή ρητών τιμών με IDENTITY_INSERT

Ίσως χρειαστεί να εισαγάγετε συγκεκριμένες τιμές σε μια στήλη ταυτότητας κατά τη μετεγκατάσταση δεδομένων, κατά τη συμπλήρωση τιμών φρουρού ή κατά την επαναφορά δεδομένων από ένα αντίγραφο ασφαλείας. Χρησιμοποιήστε το SET IDENTITY_INSERT για να ενεργοποιήσετε αυτά τα ένθετα.

Σε αυτήν την ενότητα, δημιουργείτε έναν πίνακα διαστάσεων και τον χρησιμοποιείτε IDENTITY_INSERT για να προσθέσετε γραμμές φρουρού με γνωστές τιμές κλειδιών.

  1. Δημιουργήστε έναν πίνακα διαστάσεων με μια IDENTITY στήλη:

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Εισαγωγή κανονικών γραμμών. Οι τιμές ταυτότητας δημιουργούνται αυτόματα:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Ενεργοποιήστε IDENTITY_INSERT την προσθήκη τιμών φρουρού. Όταν IDENTITY_INSERT είναι ON, δώστε μια λίστα στηλών που περιλαμβάνει τη στήλη ταυτότητας:

    SET IDENTITY_INSERT dbo.DimCustomer ON;
    
    INSERT INTO dbo.DimCustomer (CustomerKey, CustomerName, CustomerType)
    VALUES (-1, 'Unknown', 'Sentinel'),
           (-2, 'Not Applicable', 'Sentinel');
    
    SET IDENTITY_INSERT dbo.DimCustomer OFF;
    
  4. Μετά την εισαγωγή ρητών τιμών, επανατοποθετήστε τη στήλη ταυτότητας με DBCC CHECKIDENT για να εξασφαλίσετε ότι οι μελλοντικές τιμές που δημιουργούνται αυτόματα δεν συγκρούονται με τις τιμές που έχουν εισαχθεί:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Βεβαιωθείτε ότι οι σειρές φρουρού εμφανίζονται μαζί με τις σειρές που δημιουργούνται αυτόματα:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Εισαγάγετε μια γραμμή και επιβεβαιώστε ότι η τιμή που δημιουργείται αυτόματα δεν έρχεται σε διένεξη:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Adventure Works', 'Enterprise');
    
    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    

Εκκαθάριση πόρων εκμάθησης

Προαιρετικά, αποθέστε τους πίνακες που δημιουργήθηκαν κατά τη διάρκεια αυτού του σεμιναρίου:

DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;