Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Ισχύει για:✅ 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 τιμή που είναι μοναδική στον πίνακα.
Ορισμός πίνακα με στήλη
IDENTITY:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Χρησιμοποιήστε το
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');Κάντε προεπισκόπηση των δεδομένων και των τιμών που έχουν αντιστοιχιστεί στη
IDENTITYστήλη:SELECT TOP 10 * FROM Trip;Η έξοδος περιλαμβάνει την τιμή που δημιουργείται
TripIDαυτόματα για κάθε σειρά.Σημαντικό
Οι τιμές σας ενδέχεται να διαφέρουν από τις τιμές σε αυτό το άρθρο.
IDENTITYΟι στήλες παράγουν τιμές που είναι εγγυημένα μοναδικές, αλλά οι τιμές δεν είναι απαραίτητα διαδοχικές ή ταξινομημένες και μπορεί να προκύψουν κενά.Χρήση
INSERT INTOγια πρόσληψη νέων γραμμών:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);Μια λίστα στηλών είναι προαιρετική με
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);Ελέγξτε τις γραμμές που έχουν εισαχθεί:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Παρατηρήστε τις τιμές που έχουν εκχωρηθεί στις νέες γραμμές:
Εισαγωγή ρητών τιμών με IDENTITY_INSERT
Ίσως χρειαστεί να εισαγάγετε συγκεκριμένες τιμές σε μια στήλη ταυτότητας κατά τη μετεγκατάσταση δεδομένων, κατά τη συμπλήρωση τιμών φρουρού ή κατά την επαναφορά δεδομένων από ένα αντίγραφο ασφαλείας. Χρησιμοποιήστε το SET IDENTITY_INSERT για να ενεργοποιήσετε αυτά τα ένθετα.
Σε αυτήν την ενότητα, δημιουργείτε έναν πίνακα διαστάσεων και τον χρησιμοποιείτε IDENTITY_INSERT για να προσθέσετε γραμμές φρουρού με γνωστές τιμές κλειδιών.
Δημιουργήστε έναν πίνακα διαστάσεων με μια
IDENTITYστήλη:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Εισαγωγή κανονικών γραμμών. Οι τιμές ταυτότητας δημιουργούνται αυτόματα:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Ενεργοποιήστε
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;Μετά την εισαγωγή ρητών τιμών, επανατοποθετήστε τη στήλη ταυτότητας με
DBCC CHECKIDENTγια να εξασφαλίσετε ότι οι μελλοντικές τιμές που δημιουργούνται αυτόματα δεν συγκρούονται με τις τιμές που έχουν εισαχθεί:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Βεβαιωθείτε ότι οι σειρές φρουρού εμφανίζονται μαζί με τις σειρές που δημιουργούνται αυτόματα:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Εισαγάγετε μια γραμμή και επιβεβαιώστε ότι η τιμή που δημιουργείται αυτόματα δεν έρχεται σε διένεξη:
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;