Πρόσληψη δεδομένων στην Αποθήκη σας χρησιμοποιώντας Transact-SQL
Ισχύει για:✅ Warehouse στο Microsoft Fabric
Η γλώσσα Transact-SQL προσφέρει επιλογές που μπορείτε να χρησιμοποιήσετε για να φορτώσετε δεδομένα σε κλίμακα από υπάρχοντες πίνακες στο lakehouse και την αποθήκη σας σε νέους πίνακες στην αποθήκη σας. Αυτές οι επιλογές είναι κατάλληλες εάν θέλετε να δημιουργήσετε νέες εκδόσεις ενός πίνακα με συγκεντρωτικά δεδομένα, εκδόσεις πινάκων με υποσύνολο των γραμμών ή για να δημιουργήσετε έναν πίνακα ως αποτέλεσμα ενός σύνθετου ερωτήματος. Ας εξετάσουμε ορισμένα παραδείγματα.
Δημιουργήστε έναν νέο πίνακα με το αποτέλεσμα ενός ερωτήματος χρησιμοποιώντας τη ΔΗΜΙΟΥΡΓΊΑ ΠΊΝΑΚΑ AS SELECT (CTAS)
Η πρόταση CREATE TABLE AS SELECT (CTAS) σάς επιτρέπει να δημιουργήσετε έναν νέο πίνακα στην αποθήκη σας από την έξοδο μιας SELECT
πρότασης. Εκτελεί τη λειτουργία πρόσληψης στον νέο πίνακα παράλληλα, καθιστώντας τον ιδιαίτερα αποδοτικό για τον μετασχηματισμό δεδομένων και τη δημιουργία νέων πινάκων στον χώρο εργασίας σας.
Σημείωμα
Τα παραδείγματα σε αυτό το άρθρο χρησιμοποιούν το δείγμα συνόλου δεδομένων Bing COVID-19. Για να φορτώσετε το δείγμα συνόλου δεδομένων, ακολουθήστε τα βήματα στην ενότητα Πρόσληψη δεδομένων στην Αποθήκη σας χρησιμοποιώντας την πρόταση COPY για να δημιουργήσετε το δείγμα δεδομένων στην αποθήκη σας.
Το πρώτο παράδειγμα δείχνει πώς μπορείτε να δημιουργήσετε έναν νέο πίνακα που είναι ένα αντίγραφο του υπάρχοντος dbo.[bing_covid-19_data_2023]
πίνακα, αλλά φιλτραρισμένο στα δεδομένα μόνο από το έτος 2023:
CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT *
FROM [dbo].[bing_covid-19_data]
WHERE DATEPART(YEAR,[updated]) = '2023';
Μπορείτε επίσης να δημιουργήσετε έναν νέο πίνακα με νέες year
στήλες , month
, dayofmonth
με τιμές που λαμβάνονται από updated
τη στήλη στον πίνακα προέλευσης. Αυτό μπορεί να είναι χρήσιμο εάν προσπαθείτε να απεικονίσετε δεδομένα μόλυνσης κατά έτος ή για να δείτε μήνες όταν παρατηρούνται τα περισσότερα κρούσματα COVID-19:
CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth], *
FROM [dbo].[bing_covid-19_data];
Σε ένα άλλο παράδειγμα, μπορείτε να δημιουργήσετε έναν νέο πίνακα που συνοψίζει τον αριθμό των περιπτώσεων που παρατηρούνται κάθε μήνα, ανεξάρτητα από το έτος, για να αξιολογήσετε τον τρόπο με τον οποίο επηρεάζεται η εποχικότητα σε μια δεδομένη χώρα/περιοχή. Χρησιμοποιεί τον πίνακα που δημιουργήθηκε στο προηγούμενο παράδειγμα με τη νέα month
στήλη ως προέλευση:
CREATE TABLE [dbo].[infections_by_month]
AS
SELECT [country_region],[month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM [dbo].[bing_covid-19_data_with_year_month_day]
GROUP BY [country_region],[month];
Με βάση αυτόν τον νέο πίνακα, μπορούμε να δούμε ότι οι Ηνωμένες Πολιτείες παρατήρησαν πιο επιβεβαιωμένα κρούσματα για όλα τα έτη στον μήνα του January
, ακολουθούμενο από December
το και October
το . April
Είναι ο μήνας με τον χαμηλότερο αριθμό περιπτώσεων συνολικά:
SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;
Για περισσότερα παραδείγματα και αναφορά σύνταξης, ανατρέξτε στο θέμα ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ ΩΣ ΕΠΙΛΕΓΕΙ (Transact-SQL).
Πρόσληψη δεδομένων σε υπάρχοντες πίνακες με ερωτήματα T-SQL
Τα προηγούμενα παραδείγματα δημιουργούν νέους πίνακες με βάση το αποτέλεσμα ενός ερωτήματος. Για να αναπαραγάγετε τα παραδείγματα αλλά σε υπάρχοντες πίνακες, η εισαγωγή... Μπορεί να χρησιμοποιηθεί το μοτίβο SELECT . Για παράδειγμα, ο ακόλουθος κώδικας πρόσληψης νέων δεδομένων σε έναν υπάρχοντα πίνακα:
INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data]
WHERE [updated] > '2023-02-28';
Τα κριτήρια ερωτήματος για την SELECT
πρόταση μπορεί να είναι οποιοδήποτε έγκυρο ερώτημα, εφόσον οι τύποι στηλών ερωτήματος που προκύπτουν ευθυγραμμίζονται με τις στήλες στον πίνακα προορισμού. Εάν έχουν καθοριστεί ονόματα στηλών και περιλαμβάνουν μόνο ένα υποσύνολο των στηλών από τον πίνακα προορισμού, όλες οι άλλες στήλες φορτώνονται ως NULL
. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Χρήση της εισαγωγής σε... ΕΠΙΛΈΞτε για μαζική εισαγωγή δεδομένων με ελάχιστη καταγραφή και παραλληλισμό.
Πρόσληψη δεδομένων από πίνακες σε διαφορετικές αποθήκες και λίμνες
Και για τις δύο ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ AS SELECT και INSERT... SELECT, η SELECT
πρόταση μπορεί επίσης να αναφέρει πίνακες σε αποθήκες που διαφέρουν από την αποθήκη όπου είναι αποθηκευμένος ο πίνακας προορισμού σας, χρησιμοποιώντας ερωτήματα μεταξύ αποθηκών. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας τη σύμβαση [warehouse_or_lakehouse_name.][schema_name.]table_name
ονοματοθεσιών τριών μερών . Για παράδειγμα, ας υποθέσουμε ότι έχετε τους ακόλουθους πόρους χώρου εργασίας:
- Ένα lakehouse που ονομάζεται
cases_lakehouse
με τα τελευταία δεδομένα περίπτωσης. - Μια αποθήκη με την ονομασία
reference_warehouse
με πίνακες που χρησιμοποιούνται για δεδομένα αναφοράς. - Μια αποθήκη με την ονομασία
research_warehouse
όπου δημιουργείται ο πίνακας προορισμού.
Μπορεί να δημιουργηθεί ένας νέος πίνακας που χρησιμοποιεί ονόματα τριών τμημάτων για τον συνδυασμό δεδομένων από πίνακες σε αυτούς τους πόρους χώρου εργασίας:
CREATE TABLE [research_warehouse].[dbo].[cases_by_continent]
AS
SELECT
FROM [cases_lakehouse].[dbo].[bing_covid-19_data] cases
INNER JOIN [reference_warehouse].[dbo].[bing_covid-19_data] reference
ON cases.[iso3] = reference.[countrycode];
Για να μάθετε περισσότερα σχετικά με τα ερωτήματα μεταξύ αποθηκών, ανατρέξτε στο θέμα Εγγραφή ερωτήματος SQL μεταξύ βάσεων δεδομένων.