Auf dieser Seite wird beschrieben, wie Sie Abfragen für spaltenbasierte Daten ausführen.
Spaltenbasierte Daten abfragen
Die Spanner-Abfrage-Engine analysiert Abfragen und wählt automatisch das spaltenbasierte Format aus, wenn es von Vorteil ist. Bei einigen Abfrageklassen ist jedoch möglicherweise ein Abfragehinweis erforderlich, um das spaltenbasierte Format zu verwenden. Im Folgenden finden Sie Beispiele für die Verwendung des Abfragehinweises @{scan_method=columnar}:
GoogleSQL
@{scan_method=columnar} SELECT COUNT(*) FROM Singers;SELECT COUNT(*) FROM Singers @{scan_method=columnar};@{scan_method=columnar} SELECT MsgBlob FROM Messages WHERE id='1234';
Postgres
/*@ scan_method=columnar */ SELECT COUNT(*) FROM "Singers";SELECT COUNT(*) FROM "Singers" /*@ scan_method=columnar*/;/*@ scan_method=columnar */ SELECT "MsgBlob" FROM "Messages" WHERE id ='1234';
Außerdem können Sie die automatische Auswahl von spaltenbasierten Daten explizit deaktivieren, indem Sie den Abfragehinweis @{scan_method=no_columnar} verwenden.
Spaltenbasierte Spanner-Daten mit föderierten BigQuery-Abfragen abfragen
Wenn Sie spaltenbasierte Spanner-Daten aus BigQuery lesen möchten, können Sie
entweder ein externes Dataset
erstellen oder die
EXTERNAL_QUERY
Funktion verwenden.
Wenn Sie externe Datasets abfragen, werden spaltenbasierte Daten automatisch verwendet, sofern sie verfügbar und für Ihre Abfrage geeignet sind.
Wenn Sie die Funktion EXTERNAL_QUERY verwenden, verwendet Spanner automatisch die spaltenbasierten Daten, sofern sie verfügbar und für die Arbeitslast geeignet sind.
Sie können den Hinweis @{scan_method=columnar} auch in die verschachtelte Spanner-Abfrage einfügen.
Im folgenden Beispiel wird der Abfragehinweis verwendet:
- Das erste Argument für
EXTERNAL_QUERYgibt die externe Verbindung und das Dataset an:my-project.us.albums. - Das zweite Argument ist eine SQL-Abfrage, mit der
MarketingBudgetaus der TabelleAlbumInfoausgewählt wird, wobeiMarketingBudgetweniger als 500.000 ist. - Der Hinweis
@{scan_method=columnar}optimiert die externe Abfrage für das spaltenbasierte Scannen. - Die äußere
SELECT-Anweisung berechnet die Summe derMarketingBudget-Werte, die von der externen Abfrage zurückgegeben werden. - Die Klausel
AS total_marketing_spendweist der berechneten Summe einen Alias zu.
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
EXTERNAL_QUERY(
'my-project.us.albums',
'@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');
Nächste Schritte
- Informationen zur spaltenbasierten Engine
- Informationen zum Aktivieren der spaltenbasierten Engine
- Informationen zum Überwachen der spaltenbasierten Engine