Spaltendaten abfragen

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_QUERY gibt die externe Verbindung und das Dataset an: my-project.us.albums.
  • Das zweite Argument ist eine SQL-Abfrage, mit der MarketingBudget aus der Tabelle AlbumInfo ausgewählt wird, wobei MarketingBudget weniger 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 der MarketingBudget-Werte, die von der externen Abfrage zurückgegeben werden.
  • Die Klausel AS total_marketing_spend weist 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