查詢圖形中的資料
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
在 Spanner Graph 中查詢資料。
深入探索
如需包含這個程式碼範例的詳細說明文件,請參閱下列內容:
程式碼範例
C++
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。
詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。
詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。
詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。
詳情請參閱「為本機開發環境設定驗證」。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],[],[],[],null,["# Query data in a graph\n\nQuery data in a Spanner Graph.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Set up and query Spanner Graph](/spanner/docs/graph/set-up)\n\nCode sample\n-----------\n\n### C++\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n void QueryData(google::cloud::spanner::Client client) {\n namespace spanner = ::google::cloud::spanner;\n\n spanner::SqlStatement select(R\"\"\"(\n Graph FinGraph\n MATCH (a:Person)-[o:Owns]-\u003e()-[t:Transfers]-\u003e()\u003c-[p:Owns]-(b:Person)\n RETURN a.name AS sender,\n b.name AS receiver,\n t.amount,\n t.create_time AS transfer_at\n )\"\"\");\n using RowType =\n std::tuple\u003cstd::string, std::string, double, spanner::Timestamp\u003e;\n auto rows = client.ExecuteQuery(std::move(select));\n for (auto& row : spanner::StreamOf\u003cRowType\u003e(rows)) {\n if (!row) throw std::move(row).status();\n std::cout \u003c\u003c \"sender: \" \u003c\u003c std::get\u003c0\u003e(*row) \u003c\u003c \"\\t\";\n std::cout \u003c\u003c \"receiver: \" \u003c\u003c std::get\u003c1\u003e(*row) \u003c\u003c \"\\t\";\n std::cout \u003c\u003c \"amount: \" \u003c\u003c std::get\u003c2\u003e(*row) \u003c\u003c \"\\t\";\n std::cout \u003c\u003c \"transfer_at: \" \u003c\u003c std::get\u003c3\u003e(*row) \u003c\u003c \"\\n\";\n }\n\n std::cout \u003c\u003c \"Query completed for [spanner_query_graph_data]\\n\";\n }\n\n### Go\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n\n import (\n \t\"context\"\n \t\"fmt\"\n \t\"io\"\n \t\"time\"\n\n \t\"cloud.google.com/go/spanner\"\n\n \t\"google.golang.org/api/iterator\"\n )\n\n func queryGraphData(w io.Writer, db string) error {\n \tctx := context.Background()\n \tclient, err := spanner.NewClient(ctx, db)\n \tif err != nil {\n \t\treturn err\n \t}\n \tdefer client.Close()\n\n \t// Execute a Spanner query statement comprising a graph query. Graph queries\n \t// are characterized by 'MATCH' statements describing node and edge\n \t// patterns.\n \t//\n \t// This statement finds entities ('Account's) owned by all 'Person's 'b' to\n \t// which transfers have been made by entities ('Account's) owned by any\n \t// 'Person' 'a' in the graph called 'FinGraph'. It then returns the names of\n \t// all such 'Person's 'a' and 'b', and the amount and time of the transfer.\n \tstmt := spanner.https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/index.html#cloud_google_com_go_spanner_Statement{SQL: `Graph FinGraph \n \t\t MATCH (a:Person)-[o:Owns]-\u003e()-[t:Transfers]-\u003e()\u003c-[p:Owns]-(b:Person)\n \t\t RETURN a.name AS sender, b.name AS receiver, t.amount, t.create_time AS transfer_at`}\n \titer := client.https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/index.html#cloud_google_com_go_spanner_Client_Single().Query(ctx, stmt)\n \tdefer iter.Stop()\n\n \t// The results are returned in tabular form. Iterate over the\n \t// result rows and print them.\n \tfor {\n \t\trow, err := iter.Next()\n \t\tif err == iterator.Done {\n \t\t\treturn nil\n \t\t}\n \t\tif err != nil {\n \t\t\treturn err\n \t\t}\n \t\tvar sender, receiver string\n \t\tvar amount float64\n \t\tvar transfer_at time.Time\n \t\tif err := row.https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/index.html#cloud_google_com_go_spanner_Row_Columns(&sender, &receiver, &amount, &transfer_at); err != nil {\n \t\t\treturn err\n \t\t}\n \t\tfmt.Fprintf(w, \"%s %s %f %s\\n\", sender, receiver, amount, transfer_at.Format(time.RFC3339))\n \t}\n }\n\n### Java\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n static void query(DatabaseClient dbClient) {\n try (ResultSet resultSet =\n dbClient\n .singleUse() // Execute a single query against Cloud Spanner.\n .executeQuery(\n Statement.of(\n \"Graph FinGraph MATCH\"\n + \" (a:Person)-[o:Owns]-\u003e()-[t:Transfers]-\u003e()\u003c-[p:Owns]-(b:Person)RETURN\"\n + \" a.name AS sender, b.name AS receiver, t.amount, t.create_time AS\"\n + \" transfer_at\"))) {\n while (resultSet.next()) {\n System.out.printf(\n \"%s %s %f %s\\n\",\n resultSet.getString(0),\n resultSet.getString(1),\n resultSet.getDouble(2),\n resultSet.getTimestamp(3));\n }\n }\n }\n\n### Python\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n def query_data(instance_id, database_id):\n \"\"\"Queries sample data from the database using GQL.\"\"\"\n spanner_client = spanner.Client()\n instance = spanner_client.instance(instance_id)\n database = instance.database(database_id)\n\n with database.snapshot() as snapshot:\n results = snapshot.execute_sql(\n \"\"\"Graph FinGraph\n MATCH (a:Person)-[o:Owns]-\u003e()-[t:Transfers]-\u003e()\u003c-[p:Owns]-(b:Person)\n RETURN a.name AS sender, b.name AS receiver, t.amount, t.create_time AS transfer_at\"\"\"\n )\n\n for row in results:\n print(\"sender: {}, receiver: {}, amount: {}, transfer_at: {}\".format(*row))\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=spanner)."]]