Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Ισχύει για:✅ Warehouse στο Microsoft Fabric
Τα υποκατάστατα κλειδιά είναι αναγνωριστικά που χρησιμοποιούνται στην αποθήκευση δεδομένων για τη μοναδική διάκριση σειρών, ανεξάρτητα από τα φυσικά τους κλειδιά. Στο Fabric Data Warehouse, IDENTITY οι στήλες επιτρέπουν την αυτόματη δημιουργία αυτών των υποκατάστατων κλειδιών κατά την εισαγωγή νέων γραμμών σε έναν πίνακα. Αυτό το άρθρο εξηγεί πώς μπορείτε να χρησιμοποιήσετε IDENTITY στήλες στο Fabric Data Warehouse για να δημιουργήσετε και να διαχειριστείτε αποτελεσματικά τα υποκατάστατα κλειδιά.
Γιατί να χρησιμοποιήσετε μια στήλη ΤΑΥΤΟΤΗΤΑ;
IDENTITY Οι στήλες εξαλείφουν την ανάγκη για μη αυτόματη εκχώρηση κλειδιών, μειώνοντας τον κίνδυνο σφαλμάτων και απλοποιώντας την απορρόφηση δεδομένων. Οι μοναδικές τιμές που διαχειρίζεται το σύστημα είναι ιδανικές ως υποκατάστατα κλειδιά και πρωτεύοντα κλειδιά. Σε σύγκριση με τις μη αυτόματες προσεγγίσεις για την παραγωγή υποκατάστατων κλειδιών, IDENTITY οι στήλες προσφέρουν ανώτερη απόδοση καθώς τα μοναδικά κλειδιά δημιουργούνται αυτόματα χωρίς επιπλέον λογική στα ερωτήματα.
Ο τύπος δεδομένων bigint , που απαιτείται για IDENTITY στήλες, μπορεί να αποθηκεύσει έως και 9.223.372.036.854.775.807 θετικές ακέραιες τιμές, διασφαλίζοντας ότι καθ' όλη τη διάρκεια ζωής ενός πίνακα, κάθε σειρά λαμβάνει μια μοναδική τιμή στη στήλη της IDENTITY .
Για ένα σχέδιο μετεγκατάστασης δεδομένων με υποκατάστατα κλειδιά από άλλες πλατφόρμες βάσεων δεδομένων, ανατρέξτε στο θέμα Μετεγκατάσταση στηλών IDENTITY στο Fabric Data Warehouse.
Σύνταξη
Για να ορίσετε μια IDENTITY στήλη στο Fabric Data Warehouse, η IDENTITY ιδιότητα χρησιμοποιείται με την επιθυμητή στήλη. Η σύνταξη έχει ως εξής:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ]
-- Other columns here
);
Πώς λειτουργούν οι στήλες IDENTITY
Στην Αποθήκη δεδομένων Fabric, δεν μπορείτε να καθορίσετε μια προσαρμοσμένη αρχική τιμή ή αύξηση. Το σύστημα διαχειρίζεται τις τιμές εσωτερικά για να εξασφαλίσει τη μοναδικότητα.
IDENTITY Οι στήλες παράγουν πάντα θετικές ακέραιες τιμές. Κάθε νέα σειρά λαμβάνει μια νέα τιμή και η μοναδικότητα είναι εγγυημένη για όσο διάστημα υπάρχει ο πίνακας. Μόλις χρησιμοποιηθεί μια τιμή, IDENTITY δεν χρησιμοποιεί ξανά την ίδια τιμή, διατηρώντας τόσο την ακεραιότητα όσο και τη μοναδικότητα του κλειδιού. Μπορεί να εμφανιστούν κενά στις τιμές που παράγει η IDENTITY στήλη.
Κατανομή αξιών
Λόγω της κατανεμημένης αρχιτεκτονικής της μηχανής αποθήκης, το IDENTITY ακίνητο δεν εγγυάται τη σειρά με την οποία κατανέμονται οι υποκατάστατες αξίες. Η IDENTITY ιδιότητα έχει σχεδιαστεί για κλιμάκωση σε υπολογιστικούς κόμβους για μεγιστοποίηση του παραλληλισμού, χωρίς να επηρεάζεται η απόδοση φορτίου. Ως αποτέλεσμα, οι περιοχές τιμών σε διαφορετικές εργασίες πρόσληψης μπορεί να έχουν διαφορετικές περιοχές ακολουθίας.
Για να απεικονίσετε αυτήν τη συμπεριφορά, εξετάστε το ακόλουθο παράδειγμα:
-- Create a table with an IDENTITY column
CREATE TABLE dbo.T1(
C1 BIGINT IDENTITY,
C2 VARCHAR(30) NULL
)
-- Ingestion task A
INSERT INTO dbo.T1
VALUES (NULL), (NULL), (NULL), (NULL);
-- Ingestion task B
INSERT INTO dbo.T1
VALUES (NULL), (NULL), (NULL), (NULL);
-- Reviewing the data
SELECT * FROM dbo.T1;
Δείγμα αποτελέσματος:
Σε αυτό το παράδειγμα, Ingestion task A και Ingestion task B εκτελούνται διαδοχικά, ως ανεξάρτητες εργασίες. Παρόλο που οι εργασίες εκτελέστηκαν διαδοχικά, η πρώτη και οι τελευταίες τέσσερις γραμμές έχουν διαφορετικές περιοχές κλειδιών ταυτότητας στο dbo.T1.C1. Επιπλέον, όπως παρατηρήθηκε σε αυτό το παράδειγμα, μπορεί να προκύψουν κενά μεταξύ των περιοχών που έχουν εκχωρηθεί για την εργασία Α και την εργασία Β.
IDENTITY στο Fabric Data Warehouse εγγυάται ότι όλες οι τιμές σε μια IDENTITY στήλη είναι μοναδικές, αλλά μπορεί να υπάρχουν κενά στις περιοχές που παράγονται για μια δεδομένη εργασία πρόσληψης.
Προβολές συστήματος
Η προβολή καταλόγου sys.identity_columns μπορεί να χρησιμοποιηθεί για τη λίστα όλων των στηλών ταυτότητας σε μια αποθήκη. Το παρακάτω παράδειγμα παραθέτει όλους τους πίνακες που περιέχουν μια IDENTITY στήλη στον ορισμό τους, με το αντίστοιχο όνομα σχήματος και το όνομα της στήλης IDENTITY σε αυτόν τον πίνακα:
SELECT
s.name AS SchemaName,
t.name AS TableName,
c.name AS IdentityColumnName
FROM
sys.identity_columns AS ic
INNER JOIN
sys.columns AS c ON ic.[object_id] = c.[object_id]
AND ic.column_id = c.column_id
INNER JOIN
sys.tables AS t ON ic.[object_id] = t.[object_id]
INNER JOIN
sys.schemas AS s ON t.[schema_id] = s.[schema_id]
ORDER BY
s.name, t.name;
Limitations
- Μόνο ο τύπος δεδομένων bigint υποστηρίζεται για
IDENTITYστήλες στο Fabric Data Warehouse. Η προσπάθεια χρήσης άλλων τύπων δεδομένων οδηγεί σε σφάλμα. -
IDENTITY_INSERTδεν υποστηρίζεται στο Fabric Data Warehouse. Οι χρήστες δεν μπορούν να ενημερώσουν ή να εισαγάγουν με μη αυτόματο τρόπο τιμές στηλών σε στήλες ταυτότητας στην Αποθήκη δεδομένων Fabric. - Ο ορισμός ενός
seedκαιincrementδεν υποστηρίζεται. Ως αποτέλεσμα, η επανασπορά τηςIDENTITYστήλης δεν υποστηρίζεται. - Η προσθήκη νέας
IDENTITYστήλης σε έναν υπάρχοντα πίνακα μεALTER TABLEδεν υποστηρίζεται. Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε το CREATE TABLE AS SELECT (CTAS) ή το SELECT... INTO ως εναλλακτικές λύσεις για τη δημιουργία ενός αντιγράφου ενός υπάρχοντος πίνακα που προσθέτει μιαIDENTITYστήλη στον ορισμό του. - Ισχύουν ορισμένοι περιορισμοί για τον τρόπο
IDENTITYδιατήρησης των στηλών κατά τη δημιουργία ενός νέου πίνακα ως αποτέλεσμα μιας επιλογής από διαφορετικό πίνακα μεCREATE TABLE AS SELECT (CTAS)ήSELECT... INTO. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Τύποι δεδομένων του όρου SELECT - INTO (Transact-SQL).
Παραδείγματα
Ένας. Δημιουργία πίνακα με στήλη IDENTITY
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Αυτή η δήλωση δημιουργεί έναν πίνακα Employees όπου κάθε νέα γραμμή λαμβάνει αυτόματα μια μοναδική EmployeeID τιμή ως bigint .
B. INSERT σε πίνακα με στήλη ταυτότητας
Όταν η πρώτη στήλη είναι στήλη IDENTITY , δεν χρειάζεται να την καθορίσετε στη λίστα στηλών.
INSERT INTO Employees (FirstName, LastName) VALUES ('Ensi','Vasala')
Είναι επίσης δυνατή η εκπομπή των ονομάτων στηλών, εάν παρέχονται τιμές για όλες τις στήλες του πίνακα προορισμού (εκτός από τη στήλη ταυτότητας):
INSERT INTO Employees VALUES ('Quarantino', 'Esposito')
Γ. Δημιουργία νέου πίνακα με στήλη IDENTITY χρησιμοποιώντας το CREATE TABLE AS SELECT (CTAS)
Λαμβάνοντας υπόψη έναν απλό πίνακα ως παράδειγμα:
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Μπορούμε να χρησιμοποιήσουμε CREATE TABLE AS SELECT το (CTAS) για να δημιουργήσουμε ένα αντίγραφο αυτού του πίνακα, διατηρώντας την IDENTITY ιδιότητα στον πίνακα προορισμού:
CREATE TABLE RetiredEmployees
AS SELECT * FROM Employees
Η στήλη στον πίνακα προορισμού κληρονομεί την IDENTITY ιδιότητα από τον πίνακα προέλευσης. Για μια λίστα περιορισμών που ισχύουν για αυτό το σενάριο, ανατρέξτε στην ενότητα Τύποι δεδομένων του όρου SELECT - INTO.
Δ. Δημιουργήστε έναν νέο πίνακα με μια στήλη IDENTITY χρησιμοποιώντας το SELECT... ΜΈΣΑ
Λαμβάνοντας υπόψη έναν απλό πίνακα ως παράδειγμα:
CREATE TABLE dbo.Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Retired BIT
);
Μπορούμε να χρησιμοποιήσουμε SELECT... INTO για να δημιουργήσουμε ένα αντίγραφο αυτού του πίνακα, διατηρώντας την IDENTITY ιδιότητα στον πίνακα προορισμού:
SELECT *
INTO dbo.RetiredEmployees
FROM dbo.Employees
WHERE Retired = 1;
Η στήλη στον πίνακα προορισμού κληρονομεί την IDENTITY ιδιότητα από τον πίνακα προέλευσης. Για μια λίστα περιορισμών που ισχύουν για αυτό το σενάριο, ανατρέξτε στην ενότητα Τύποι δεδομένων του όρου SELECT - INTO.