הרצת שאילתות במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery Java

הרצת שאילתות במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery Java

בקישורים הבאים מופיע מידע על:

  1. מפעילים את Cloud Shell בפרויקט ב- Google Cloud .
  2. פותחים את Cloud Shell Editor.
  3. הכנת יחסי תלות לשאילתות.
  4. הרצת שאילתות במערך נתונים ציבורי ב-BigQuery.
  5. לפנות.

הזמן המשוער לסיום:

לוחצים על התחלה כדי להתחיל.

הפעלת Cloud Shell בפרויקט ב- Google Cloud

  1. אם לא מפעילים חיוב בפרויקט, המערכת מעבירה אתכם אוטומטית ל-Sandbox של BigQuery. ארגז החול של BigQuery מאפשר לכם ללמוד על BigQuery באמצעות קבוצה מוגבלת של תכונות BigQuery ללא תשלום. אם אתם לא מתכננים להשתמש בפרויקט מעבר למה שמתואר במסמך הזה, מומלץ להשתמש ב-Sandbox של BigQuery.

  2. לוחצים על הפעלת Cloud Shell. הצג לי

כדי ללמוד איך לפתוח את Cloud Shell Editor, לוחצים על Next.

פתיחה של Cloud Shell Editor

  1. ב-Cloud Shell, יוצרים פרויקט Java חדש באמצעות Apache Maven:

    mvn archetype:generate \
        -DgroupId=com.google.app \
        -DartifactId=bigquery-java-quickstart \
        -DinteractiveMode=false
    

    הפקודה הזו יוצרת פרויקט Maven בשם bigquery-java-quickstart.

    הפלט אמור להיראות כך: כדי לפשט את הפלט, השמטנו כמה שורות.

    [INFO] Scanning for projects...
    ...
    [INFO] Building Maven Stub Project (No POM) 1
    ...
    [INFO] BUILD SUCCESS
    ...
    

    יש הרבה מערכות לניהול תלות שאפשר להשתמש בהן חוץ מ-Maven. מידע נוסף על הגדרת סביבת פיתוח בשפת Java לשימוש בספריות לקוח

  2. משנים את השם של הקובץ App.java ש-Maven יוצר כברירת מחדל:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. פותחים את Cloud Shell Editor:

    cloudshell workspace bigquery-java-quickstart
    
  4. אם מוצגת בקשה לסנכרן את נתיב המחלקה או את ההגדרה של Java, לוחצים על תמיד.

    אם לא מוצגת לכם הנחיה ונתקלתם בשגיאה שקשורה ל-classpath במהלך ההסבר הזה, אתם צריכים לפעול באופן הבא:

    1. לוחצים על קובץ > העדפות > פתיחת הגדרות (ממשק משתמש).
    2. לוחצים על תוספים > Java.
    3. גוללים אל Configuration: Update Build Configuration ובוחרים באפשרות automatic.

כדי ללמוד איך להכין תלות בשאילתות, לוחצים על הבא.

הכנת יחסי תלות לשאילתות

  1. בחלונית Explorer, מאתרים את הפרויקט BIGQUERY-JAVA-QUICKSTART.

  2. לוחצים על הקובץ pom.xml כדי לפתוח אותו.

  3. בתוך התג <dependencies>, מוסיפים את יחסי התלות הבאים אחרי יחסי תלות קיימים. לא להחליף תלות קיימת.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. בשורה שאחרי תג הסגירה (</dependencies>), מוסיפים את השורה הבאה:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.1.5</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

כדי ללמוד איך להריץ שאילתות במערך נתונים ציבורי ב-BigQuery, לוחצים על הבא.

הרצת שאילתות במערך נתונים ציבורי ב-BigQuery

  1. בחלונית Explorer (סייר), בפרויקט BIGQUERY-JAVA-QUICKSTART, לוחצים על src > main/java/com/google/app > SimpleApp.java. הקובץ ייפתח.

  2. כדי ליצור שאילתה על מערך הנתונים bigquery-public-data.stackoverflow, משאירים את השורה הראשונה בקובץ (package com.google.app;) ומחליפים את שאר התוכן בקובץ בקוד הבא:

    
    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.FieldValueList;
    import com.google.cloud.bigquery.Job;
    import com.google.cloud.bigquery.JobId;
    import com.google.cloud.bigquery.JobInfo;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    
    public class SimpleApp {
    
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the app.
        String projectId = "MY_PROJECT_ID";
        simpleApp(projectId);
      }
    
      public static void simpleApp(String projectId) {
        try {
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(
                      "SELECT CONCAT('https://stackoverflow.com/questions/', "
                          + "CAST(id as STRING)) as url, view_count "
                          + "FROM `bigquery-public-data.stackoverflow.posts_questions` "
                          + "WHERE tags like '%google-bigquery%' "
                          + "ORDER BY view_count DESC "
                          + "LIMIT 10")
                  // Use standard SQL syntax for queries.
                  // See: https://cloud.google.com/bigquery/sql-reference/
                  .setUseLegacySql(false)
                  .build();
    
          JobId jobId = JobId.newBuilder().setProject(projectId).build();
          Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
    
          // Wait for the query to complete.
          queryJob = queryJob.waitFor();
    
          // Check for errors
          if (queryJob == null) {
            throw new RuntimeException("Job no longer exists");
          } else if (queryJob.getStatus().getExecutionErrors() != null
              && queryJob.getStatus().getExecutionErrors().size() > 0) {
            // TODO(developer): Handle errors here. An error here do not necessarily mean that the job
            // has completed or was unsuccessful.
            // For more details: https://cloud.google.com/bigquery/troubleshooting-errors
            throw new RuntimeException("An unhandled error has occurred");
          }
    
          // Get the results.
          TableResult result = queryJob.getQueryResults();
    
          // Print all pages of the results.
          for (FieldValueList row : result.iterateAll()) {
            // String type
            String url = row.get("url").getStringValue();
            String viewCount = row.get("view_count").getStringValue();
            System.out.printf("%s : %s views\n", url, viewCount);
          }
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Simple App failed due to error: \n" + e.toString());
        }
      }
    }

    השאילתה מחזירה את 10 הדפים הנצפים ביותר ב-Stack Overflow ואת מספר הצפיות שלהם.

  3. לוחצים לחיצה ימנית על SimpleApp.java ואז על Run Java. אם מתבקשים לאשר את Cloud Shell ומסכימים לתנאים, לוחצים על Authorize.

    התוצאה אמורה להיראות כך:

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

הצלחתם להריץ שאילתה במערך נתונים ציבורי באמצעות ספריית הלקוח של BigQuery Java.

כדי לא לצבור חיובים בחשבון ולקבל מידע על השלבים הבאים, לוחצים על הבא.

השלבים הבאים

אפשר לשמור את המשאבים שיצרתם ולהמשיך להשתמש ב-BigQuery, או לנקות אותם כדי להימנע מחיובים.

פעולות נוספות שאפשר לבצע באמצעות BigQuery

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud , אתם יכולים למחוק את הפרויקט Google Cloud או למחוק את המשאבים שיצרתם במדריך הזה.

מחיקת הפרויקט

אם יצרתם פרויקט חדש כדי ללמוד על BigQuery ואתם כבר לא צריכים אותו, אתם יכולים למחוק אותו. חשוב לדעת שאם מוחקים פרויקט, כל מה שיש בו נמחק, ומאבדים את מזהי הפרויקט בהתאמה אישית.

מחיקת המשאבים

אם השתמשתם בפרויקט קיים, מוחקים את התיקייה bigquery-java-quickstart שיצרתם:

  1. ב-Cloud Shell, עוברים לספרייה ברמה גבוהה יותר:

    cd ..
    
  2. מוחקים את המשאבים שיצרתם:

    rm -R bigquery-java-quickstart
    

    הדגל -R מוחק את כל הנכסים בתיקייה.