arrow_back

Büyük Veri Analizini Slayt Sunusu Haline Getirme

Join Sign in
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Büyük Veri Analizini Slayt Sunusu Haline Getirme

Lab 1 hour universal_currency_alt No cost show_chart Intermediate
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP240

Google Cloud Rehbersiz Laboratuvarları

Genel Bakış

Veri bilimcilerin büyük verileri analiz etmek için kullanabileceği pek çok araç mevcuttur. Fakat bu araçlardan hangisi yönetime ve paydaşlara analizin açıklamasını yapıp gerekçesini sunmanıza yardımcı olabilir? Kağıt üzerindeki veya veritabanındaki işlenmemiş sayılar size istediğiniz sonucu veremez. Bu Google Apps Komut Dosyası laboratuvarı, iki Google geliştirici platformunu, yani Workspace ve Google Cloud'u kullanarak son aşamayı tamamlamanıza yardımcı olabilir.

Google Cloud geliştirici araçlarıyla verileri toplayıp analiz edebilirsiniz. Bu verilerden slayt ile e-tablo sunusu oluşturarak hazırladığınız muhteşem analizleriniz ve ayrıntılı çıkarımlarınızla hem yönetim hem paydaşlardan tam not alacaksınız.

Bu laboratuvarda, Google E-Tablolar ve Google Slaytlar için Google Cloud BigQuery API (Apps Komut Dosyası gelişmiş hizmeti olarak) ile yerleşik Apps Komut Dosyası hizmetleri açıklanmaktadır.

Laboratuvarda, gerçek hayatta karşılaşma ihtimalinizin yüksek olduğu senaryolar da verilmektedir. Kullanılan uygulamayla Google Cloud genelindeki özellikler ve API'ler sunulmuştur. Laboratuvarın hedefi, kuruluşunuz veya müşterilerinizin karşılaşabileceği zorlukların üstesinden gelmek için hem Google Cloud hem Workspace'ten nasıl yararlanabileceğinizi göstermektir.

Neler öğreneceksiniz?

  • Birden fazla Google hizmetiyle Google Apps Komut Dosyası'nı kullanma
  • Büyük veri analizi yapmak için BigQuery'yi kullanma
  • Google E-Tablosu oluşturup bu dosyaya verileri girmenin yanı sıra e-tablo verileriyle grafik oluşturma
  • E-tablodaki grafik ve verileri, Google Slaytlar sunusunun farklı slaytlarına aktarma

Kurulum

Laboratuvarı Başlat düğmesini tıklamadan önce

Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Laboratuvarı Başlat'ı tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.

Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanırsınız.

Bu laboratuvarı tamamlamak için şunlar gerekir:

  • Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir).
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli pencerede açın. Aksi takdirde, kişisel hesabınızla öğrenci hesabınız arasında oluşabilecek çakışmalar nedeniyle kişisel hesabınızdan ek ücret alınabilir.
  • Laboratuvarı tamamlamak için yeterli süre. (Laboratuvarlar, başlatıldıktan sonra duraklatılamaz)
Not: Kişisel bir Google Cloud hesabınız veya projeniz varsa bu laboratuvarda kullanmayın. Aksi takdirde hesabınızdan ek ücret alınabilir.

Giriş

Google Apps Komut Dosyası ve BigQuery

Google Apps Komut Dosyası, Google REST API'lerin kullanımına kıyasla daha yüksek düzeyde çalışan bir Workspace geliştirme platformudur. Pek çok farklı beceri düzeyindeki geliştirici tarafından kullanılabilen sunucusuz bir geliştirme ve uygulama barındırma ortamıdır. Tek bir cümle halinde özetlemek gerekirse "Apps Komut Dosyası; Workspace'in otomasyonu, kapsamının genişletilmesi ve entegrasyonu için kullanılan sunucusuz bir JavaScript çalışma zamanıdır."

Node.js'ye benzer şekilde sunucu tarafı bir JavaScript'tir. Ancak hızlı, eşzamansız ve etkinliğe dayalı uygulama barındırma yerine Workspace ve diğer Google hizmetleriyle sıkı entegrasyon elde etmeye odaklanır. Üstelik sunduğu geliştirme ortamı, alışkın olduğunuz ortamdan tamamen farklı olabilir. Apps Komut Dosyası size şu olanakları tanır:

  • Tarayıcı tabanlı bir kod düzenleyicide geliştirme yapabilirsiniz. Apps Komut Dosyası için kullanılan komut satırı dağıtım aracı clasp'i kullanıyorsanız yerel olarak da geliştirme işlemleri gerçekleştirebilirsiniz.
  • Workspace'e ve başka Google hizmetlerine veya harici hizmetlere erişmek için (Apps Komut Dosyası, URLfetch ya da Jdbc hizmetleri üzerinden) özelleştirilen bir JavaScript sürümünde kodlama yapabilirsiniz.
  • Yetkilendirme kodu yazmanız zorunlu değildir. Apps Komut Dosyası bu işlemi sizin için yapar.
  • Uygulamanızı barındırmamayı tercih edebilirsiniz. Uygulamanız, buluttaki Google sunucularında barındırılır ve çalışır.
Not: Apps Komut Dosyası hakkında daha fazla bilgi için resmi belgeleri inceleyin. Bu belgelerde hızlı başlangıç kılavuzlarının bulunduğu bir genel bakış bölümü, eğitimler ve videolar da yer almaktadır.

Apps Komut Dosyası, diğer Google teknolojileriyle arayüz oluşturmak için iki yöntemden yararlanır:

  • Yerleşik hizmet
  • Gelişmiş hizmet

Yerleşik hizmet, Workspace veya Google ürün verilerine ya da diğer faydalı yardımcı program yöntemlerine erişmek için kullanabileceğiniz üst düzey yöntemler sunar. Gelişmiş hizmet, yalnızca Workspace veya Google REST API için ince bir sarmalayıcıdır. Gelişmiş hizmetler, REST API için eksiksiz kapsam sunar. Genellikle yerleşik hizmetlerden daha fazlasını gerçekleştirebilse de bu hizmetler daha karmaşık kodların kullanılması gerekli kılar (Yine de REST API'yi kullanmaktan daha kolaydır).

Ayrıca gelişmiş hizmetlerin kullanılmadan önce komut dosyası projesi için etkinleştirilmiş olması gerekir. Daha kolay kullanılabilmesi ve gelişmiş hizmetlere göre daha ağır işleri yapabilmesi nedeniyle, mümkünse yerleşik hizmet tercih edilir. Ancak bazı Google API'lerinin yerleşik hizmetleri yoktur. Bu nedenle bazı durumlarda tek seçenek, gelişmiş hizmeti kullanmak olabilir. BigQuery bu duruma örnek olarak gösterilebilir. Yerleşik hizmet sunulmaz ancak BigQuery gelişmiş hizmeti mevcuttur. (Hizmet sunulmamasından iyidir, değil mi?)

Not: Bu alana yeni giriş yapanlar için açıklamak gerekirse BigQuery, çok büyük veri topluluklarında basit (veya karmaşık) sorgular gerçekleştirmek için kullanılan bir Google Cloud hizmeti olarak tanımlanabilir. Birkaç terabayta kadar ulaşabilen veri topluluklarında bile saatler veya günler yerine saniyeler içinde sonuç alınır.

Apps Komut Dosyası'ndan Google E-Tablolar ve Slaytlar'a erişme

BigQuery yalnızca Apps Komut Dosyası'nın gelişmiş hizmeti olarak kullanılabilir. Ancak hem Google E-Tablolar hem Slaytlar, yerleşik Apps Komut Dosyası hizmetlerinin yanı sıra gelişmiş hizmetleri de sunar. Yalnızca API'de bulunan ve yerleşik olmayan özelliklere erişmek için kullanılan gelişmiş hizmetler buna örnek olarak gösterilebilir. Yerleşik hizmet, geliştirme sürecini basitleştiren daha yüksek düzey yapılar ve erişimi kolay olan çağrılar sunar. Bu nedenle, mümkün olduğu durumlarda gelişmiş hizmet yerine yerleşik hizmet kullanmayı tercih edin.

Not: Kodlama kısmına geçmeden önce bilgileri gözden geçirmek için E-Tablolar hizmeti ve Slaytlar hizmeti bölümünü inceleyin.

1. görev: BigQuery'yi sorgulama ve sonuçları e-tabloya girme

İlk göreviniz, bu laboratuvarın büyük bir kısmını oluşturuyor. Bu bölümü bitirdiğinizde laboratuvarın neredeyse yarısını tamamlamış olacaksınız.

Bu bölümde şunları gerçekleştireceksiniz:

  • Yeni bir Google Apps Komut Dosyası projesi oluşturma
  • BigQuery gelişmiş hizmetine erişimi etkinleştirme
  • Geliştirme düzenleyicisine gitme ve uygulama kaynak kodunu girme
  • Uygulama yetkilendirme sürecini (OAuth2) tamamlama
  • BigQuery'ye istek gönderen uygulamayı çalıştırma
  • BigQuery'deki sonuçlarla oluşturulan yepyeni bir Google E-Tablosunu görüntüleme

Yeni bir Apps Komut Dosyası projesi oluşturma

  1. script.google.com adresine giderek yeni bir Apps Komut Dosyası projesi oluşturun. Bu laboratuvar için Apps Komut Dosyası oluştur bağlantısını tıklayın.

Apps Komut Dosyası oluştur bağlantısı

  1. Apps Komut Dosyası kod düzenleyici açılır:

Apps Komut Dosyası kod düzenleyici

  1. En üstteki proje adını tıklayıp projenize bir ad verin (yukarıdaki resimde "Untitled project" olarak görünür).

  2. Projeyi Yeniden Adlandırın iletişim kutusunda, projeye tercih ettiğiniz adı verin (örneğin "BigQuery", "E-Tablolar", "Slaytlar demo" vs.) ve Yeniden adlandır'ı tıklayın.

BigQuery gelişmiş hizmetini etkinleştirme

Yeni projeniz için BigQuery gelişmiş hizmetini ve BigQuery API'yi etkinleştirin.

  1. Hizmetler'in yanındaki Hizmet ekle simgesini tıklayın.

Ekle simgesi

  1. Hizmet ekle iletişim kutusunda ilgili hizmetleri ve API'leri seçin.

AdSense Management API ve Admin SDK API gibi seçeneklerin yer aldığı bir hizmet iletişim kutusu ekleyin.

  1. Cloud Console'a giderek gezinme menüsü > API'ler ve Hizmetler > Kitaplık'ı seçin.

Kontrol Paneli, Kitaplık ve Kimlik Bilgisi gibi seçenekleri içeren API'ler ve Hizmetler menüsü.

  1. Arama kutusuna BigQuery API yazın veya bu ifadeyi yapıştırın, ardından BigQuery API'yi seçin.

BigQuery API yazılı arama kutusu

  1. Gerekliyse BigQuery API'yi etkinleştirmek için Etkinleştir'i tıklayın.

API Kitaplığı sayfasında vurgulanmış Etkinleştir düğmesi.

  1. Projenize dönün. Hizmet ekle iletişim kutusu açık durumda olacaktır.

  2. İletişim kutusunu kapatmak için BigQuery API'yi seçip Ekle'yi tıklayın.

BigQuery API seçeneği ve Ekle düğmesi vurgulanmış halde Hizmet ekle iletişim kutusu.

Uygulama kodunuzu girip çalıştırma

Artık uygulama kodunu girmeye, yetkilendirme sürecini tamamlamaya ve bu uygulamayı çalıştırmak için ilk adımları atmaya hazırsınız.

  1. Aşağıdaki kutuda yer alan kodu kopyalayıp kod düzenleyicideki tüm içeriğin üzerine yapıştırın:
/** * Copyright 2018 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Filename for data results var QUERY_NAME = "Most common words in all of Shakespeare's works"; // Replace this value with your Google Cloud API project ID var PROJECT_ID = '<YOUR_PROJECT_ID>'; if (!PROJECT_ID) throw Error('Project ID is required in setup'); /** * Runs a BigQuery query; puts results into Sheet. You must enable * the BigQuery advanced service before you can run this code. * @see http://developers.google.com/apps-script/advanced/bigquery#run_query * @see http://github.com/gsuitedevs/apps-script-samples/blob/master/advanced/bigquery.gs * * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results * @see http://developers.google.com/apps-script/reference/spreadsheet/spreadsheet */ function runQuery() { // Replace sample with your own BigQuery query. var request = { query: 'SELECT ' + 'LOWER(word) AS word, ' + 'SUM(word_count) AS count ' + 'FROM [bigquery-public-data:samples.shakespeare] ' + 'GROUP BY word ' + 'ORDER BY count ' + 'DESC LIMIT 10' }; var queryResults = BigQuery.Jobs.query(request, PROJECT_ID); var jobId = queryResults.jobReference.jobId; // Wait for BQ job completion (with exponential backoff). var sleepTimeMs = 500; while (!queryResults.jobComplete) { Utilities.sleep(sleepTimeMs); sleepTimeMs *= 2; queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId); } // Get all results from BigQuery. var rows = queryResults.rows; while (queryResults.pageToken) { queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, { pageToken: queryResults.pageToken }); rows = rows.concat(queryResults.rows); } // Return null if no data returned. if (!rows) { return Logger.log('No rows returned.'); } // Create the new results spreadsheet. var spreadsheet = SpreadsheetApp.create(QUERY_NAME); var sheet = spreadsheet.getActiveSheet(); // Add headers to Sheet. var headers = queryResults.schema.fields.map(function(field) { return field.name.toUpperCase(); }); sheet.appendRow(headers); // Append the results. var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } // Start storing data in row 2, col 1 var START_ROW = 2; // skip header row var START_COL = 1; sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); }
  1. Yeni oluşturduğunuz dosyayı kaydetmek için menü çubuğundaki Projeyi kaydet simgesini tıklayın veya Ctrl + S tuşlarına basın.

  2. Dosya adının yanındaki üç nokta işaretini, ardından Yeniden adlandır'ı tıklayarak dosyayı yeniden adlandırabilirsiniz.

Vurgulanmış &quot;Yeniden adlandır&quot; seçeneği

  1. Dosya adını bq-sheets-slides.gs olarak değiştirin ve Enter'a basın.

Bu kod ne işe yarar? BigQuery'yi sorguladığını ve sonuçları yeni bir Google E-Tablosuna yazdığını zaten biliyorsunuz. Peki bu sorgunun işlevi nedir?

  1. runQuery() işlevindeki sorgu kodunu inceleyin:
SELECT LOWER(word) AS word, SUM(word_count) AS count FROM [bigquery-public-data:samples.shakespeare] GROUP BY word ORDER BY count DESC LIMIT 10

Bu sorgu, Shakespeare'in eserleri (BigQuery'nin herkese açık veri kümesinin bir parçasıdır) içinde arama yapar ve eserlerin tümünde en sık kullanılmış olan 10 kelimeyi, kullanım sayısına göre sıralayarak gösterir. Söz konusu işlemi elle yapmanın ne kadar zor olacağını tahmin edebilirsiniz. Bu örneğin, size BigQuery'nin ne kadar yararlı olduğu hakkında bir ipucu vereceğini düşünüyoruz.

Çok az kaldı. PROJECT_ID değişkenini bq-sheets-slides.gs'nin üzerine ayarlamak için geçerli bir proje kimliği gerekir.

  1. <YOUR_PROJECT_ID> kısmını sol paneldeki Proje Kimliğinizle değiştirin.

Aşağıda, örnek proje kimliğinin yer aldığı bir kod örneği verilmiştir. Gerçek PROJECT_ID değeriniz bu örnektekinden farklıdır.

Örnek kod:

// Filename for data results var QUERY_NAME = "Most common words in all of Shakespeare's works"; // Replace this value with your Google Cloud API project ID var PROJECT_ID = '<YOUR_PROJECT_ID>'; if (!PROJECT_ID) throw Error('Project ID is required in setup'); Not: Bu kod snippet'indeki if ifadesi, proje kimliği kullanılmadığı zaman uygulamada daha fazla ilerleme kaydedilmemesi amacıyla eklenir. Not: Menü seçicisi hareketsiz ve çalışamaz hale gelirse sayfayı yeniden yükleyin.
  1. Dosyayı kaydedin ve menü çubuğundaki Çalıştır seçeneğini tıklayıp kodunuzu çalıştırın.

  2. Ardından, İzinleri İncele'yi tıklayın.

Not: İstisna: BigQuery API Apps Komut Dosyası tarafından yönetilen… şeklinde bir hata alırsanız BigQuery API hizmetini kaldırıp yeniden ekleyin.
  1. Qwiklabs.net'ten bir hesap seçin iletişim kutusundan kullanıcı adınızı, ardından İzin ver'i tıklayın.
Not: Uygulamayı yetkilendirdikten sonra bu işlemi her yürütmede tekrarlamanız gerekmez. Söz konusu iletişim kutusunu, bu laboratuvarın ilerleyen aşamalarındaki "Sonuç verilerini bir slayt kümesine ekleme" bölümüne gelene kadar bir daha görmezsiniz. Burada, Google Slaytlar sunularını oluşturmak ve yönetmek için kullanıcı izni istenir.
  1. İşlev çalıştırıldığı zaman üst tarafta küçük bir mesaj kutusu açılır.

Mesaj: Çalıştırılan işlev runQuery...

İşlev tamamlandığı zaman mesaj kutusu kaybolur. Mesaj kutusunu görmemeniz, işlevin tamamlandığı anlamına gelebilir.

  1. Google Drive'ınıza gidip Most common words in all of Shakespeare's works (Shakespeare'in eserlerinde en sık kullanılan kelimeler) başlıklı veya QUERY_NAME değişkenine atadığınız ada sahip olan yeni Google E-Tablosu'nu bulun.

Drive&#39;ım penceresi

  1. E-tabloyu açın. En sık kullanılan kelimeler, kullanım sayısına göre çoktan aza doğru sıralanacak şekilde 10 satırda gösterilir.

Shakespeare&#39;in eserlerinde en sık kullanılan kelimeler e-tablosu

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. BigQuery'yi sorgulama ve sonuçları E-Tabloya girme

Özet

Tüm bu işlemlerle neler elde ettiniz? Shakespeare'in tüm eserlerini sorgulayan bir kod çalıştırdınız. Sorgulanan verilerin miktarı ÇOK yüksek olmasa da yazarın tüm oyunlarındaki kelimeleri kendi başınıza incelemenin, kelimelerin sayısını tutmanın ve bunları kullanım sıklığına göre çoktan aza doğru sıralamanın pek de kolay bir görev olduğu söylenemez. Bu görevi sizin için tamamlaması amacıyla BigQuery'yi kullanmakla kalmayıp Google E-Tablolar için Apps Komut Dosyası'ndaki yerleşik hizmetten de yararlandınız. Bu hizmet, elinizdeki verileri kolayca kullanılabilecek şekilde düzenledi.

Sorguyu Apps Komut Dosyası'nda çalıştırmadan önce her zaman BigQuery konsolunda test edebilirsiniz. BigQuery'nin kullanıcı arayüzü, geliştiriciler tarafından kullanılabilir.

  1. Cloud Console'a gidin ve gezinme menüsü > BigQuery'yi seçin.

Gezinme menüsü

  1. Cloud Console iletişim kutusundaki BigQuery'ye Hoş Geldiniz bölümünden BİTTİ'yi tıklayın.

BigQuery konsolu açılır.

  1. Sorgu düzenleyiciye kodunuzu girin ve Çalıştır'ı tıklayın:
SELECT LOWER(word) AS word, sum(word_count) AS count FROM `bigquery-public-data.samples.shakespeare` GROUP BY word ORDER BY count DESC LIMIT 10

Çalıştır düğmesi vurgulanmış halde sorgu düzenleyici

2. görev: Google E-Tablolar'da bir grafik oluşturma

Komut Dosyası Düzenleyicisi'ne dönün. Şimdiye kadar Shakespeare'in eserlerini sorgulayan, bunları sıralayan ve sonuçları E-Tablolar'da sunan bir uygulama kodladınız. Bu kodda runQuery() işlevi, BigQuery ile iletişim kurup sonuçlarını E-Tablolar'a gönderir. Şimdi de verileri grafik halinde gösterecek bir kod ekleyeceksiniz. Bu bölümde, verileri grafik halinde göstermek için E-Tablolar'ın newChart() yöntemini kullanan, createColumnChart() adında yeni bir işlev oluşturacaksınız.

createColumnChart() işlevi, verilerin bulunduğu sayfayı alıp tüm verileri içeren bir sütunsal grafik isteğinde bulunur. İlk satırda veriler yerine sütun başlıkları bulunduğundan veri aralığı A2 hücresinden başlar.

  1. Grafiği oluşturun: createColumnChart() işlevini runQuery()'den hemen sonra (son kod satırından sonra) bq-sheets-slides.gs'ye ekleyin.
/** * Uses spreadsheet data to create columnar chart. * @param {Spreadsheet} Spreadsheet containing results data * @returns {EmbeddedChart} visualizing the results * @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart */ function createColumnChart(spreadsheet) { // Retrieve the populated (first and only) Sheet. var sheet = spreadsheet.getSheets()[0]; // Data range in Sheet is from cell A2 to B11 var START_CELL = 'A2'; // skip header row var END_CELL = 'B11'; // Place chart on Sheet starting on cell E5. var START_ROW = 5; // row 5 var START_COL = 5; // col E var OFFSET = 0; // Create & place chart on the Sheet using above params. var chart = sheet.newChart() .setChartType(Charts.ChartType.COLUMN) .addRange(sheet.getRange(START_CELL + ':' + END_CELL)) .setPosition(START_ROW, START_COL, OFFSET, OFFSET) .build(); sheet.insertChart(chart); }
  1. E-tabloyu döndürün: Yukarıdaki kodda createColumnChart() için bir e-tablo nesnesinin kullanılması gerekir. Bu nedenle uygulamanın spreadsheet nesnesini createColumnChart()'a iletebilmesi için uygulamada, nesneyi döndürecek şekilde ince ayar yapın. Google E-Tablosu'nun oluşturulmasını kaydettikten sonra nesneyi, runQuery()'nin sonunda döndürün.

  2. Son satırı (Logger.log ile başlar.) şununla değiştirin:

Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); // Return the spreadsheet object for later use. return spreadsheet; }
  1. createBigQueryPresentation() işlevini çalıştırın: BigQuery ve grafik oluşturma işlevini mantıksal olarak ayırmak önemli ölçüde işinize yarar. Uygulamayı çalıştırmak ve createColumnChart()'ı çağırmak için createBigQueryPresentation() işlevini oluşturun. Eklediğiniz kod şu şekilde görünmelidir:
/** * Runs a BigQuery query, adds data and a chart in a Sheet. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); createColumnChart(spreadsheet); }
  1. Bu kod bloğunun hemen ardından createBigQueryPresentation() işlevini ekleyin:
// Filename for data results var QUERY_NAME = "Most common words in all of Shakespeare's works"; // Replace this value with your Google Cloud API project ID var PROJECT_ID = '<YOUR_PROJECT_ID>'; if (!PROJECT_ID) throw Error('Project ID is required in setup');
  1. Kodun farklı yerlerde yeniden kullanılabilmesini sağlayın: Yukarıda, e-tablo nesnesini döndürerek ve çalışma işlevini oluşturarak iki önemli adımı tamamladınız. İş arkadaşınızın, URL kaydedilmeden runQuery() işlevini tekrar kullanmak istediğini varsayalım.

runQuery() işlevini genel kullanıma daha uygun hale getirmek için bu günlük satırını taşıyın. Günlük satırını taşıyabileceğiniz en uygun yer neresidir? En uygun yerincreateBigQueryPresentation() olduğunu düşündüyseniz soruyu doğru yanıtladınız.

Günlük satırı taşındıktan sonra şu şekilde görünmelidir:

/** * Runs a BigQuery query, adds data and a chart in a Sheet. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); createColumnChart(spreadsheet); }

Yukarıdaki değişiklikleri yaptıktan sonra bq-sheets-slides.js şu şekilde görünmelidir (PROJECT_ID kısmı hariç):

/** * Copyright 2018 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Filename for data results var QUERY_NAME = "Most common words in all of Shakespeare's works"; // Replace this value with your Google Cloud API project ID var PROJECT_ID = '<YOUR_PROJECT_ID>'; if (!PROJECT_ID) throw Error('Project ID is required in setup'); /** * Runs a BigQuery query, adds data and a chart in a Sheet. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); createColumnChart(spreadsheet); } /** * Runs a BigQuery query; puts results into Sheet. You must enable * the BigQuery advanced service before you can run this code. * @see http://developers.google.com/apps-script/advanced/bigquery#run_query * @see http://github.com/gsuitedevs/apps-script-samples/blob/master/advanced/bigquery.gs * * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results * @see http://developers.google.com/apps-script/reference/spreadsheet/spreadsheet */ function runQuery() { // Replace sample with your own BigQuery query. var request = { query: 'SELECT ' + 'LOWER(word) AS word, ' + 'SUM(word_count) AS count ' + 'FROM [bigquery-public-data:samples.shakespeare] ' + 'GROUP BY word ' + 'ORDER BY count ' + 'DESC LIMIT 10' }; var queryResults = BigQuery.Jobs.query(request, PROJECT_ID); var jobId = queryResults.jobReference.jobId; // Wait for BQ job completion (with exponential backoff). var sleepTimeMs = 500; while (!queryResults.jobComplete) { Utilities.sleep(sleepTimeMs); sleepTimeMs *= 2; queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId); } // Get all results from BigQuery. var rows = queryResults.rows; while (queryResults.pageToken) { queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, { pageToken: queryResults.pageToken }); rows = rows.concat(queryResults.rows); } // Return null if no data returned. if (!rows) { return Logger.log('No rows returned.'); } // Create the new results spreadsheet. var spreadsheet = SpreadsheetApp.create(QUERY_NAME); var sheet = spreadsheet.getActiveSheet(); // Add headers to Sheet. var headers = queryResults.schema.fields.map(function(field) { return field.name.toUpperCase(); }); sheet.appendRow(headers); // Append the results. var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } // Start storing data in row 2, col 1 var START_ROW = 2; // skip header row var START_COL = 1; sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); // Return the spreadsheet object for later use. return spreadsheet; } /** * Uses spreadsheet data to create columnar chart. * @param {Spreadsheet} Spreadsheet containing results data * @returns {EmbeddedChart} visualizing the results * @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart */ function createColumnChart(spreadsheet) { // Retrieve the populated (first and only) Sheet. var sheet = spreadsheet.getSheets()[0]; // Data range in Sheet is from cell A2 to B11 var START_CELL = 'A2'; // skip header row var END_CELL = 'B11'; // Place chart on Sheet starting on cell E5. var START_ROW = 5; // row 5 var START_COL = 5; // col E var OFFSET = 0; // Create & place chart on the Sheet using above params. var chart = sheet.newChart() .setChartType(Charts.ChartType.COLUMN) .addRange(sheet.getRange(START_CELL + ':' + END_CELL)) .setPosition(START_ROW, START_COL, OFFSET, OFFSET) .build(); sheet.insertChart(chart); }
  1. Dosyayı kaydedin.

  2. Ardından menü çubuğunda runQuery'yi tıklayıp açılır listeden createBigQueryPresentation'ı seçin.

  3. Ardından Çalıştır'ı tıklayın.

İşlevi çalıştırdıktan sonra Google Drive'ınıza başka bir Google E-Tablosu eklenir ancak bu sefer e-tabloda, verilerin yanında bir grafik de yer alır:

Çubuk grafik içeren, Shakespeare&#39;in eserlerinde en sık kullanılan kelimeler e-tablosu.

3. görev: Sonuç verilerini bir slayt kümesine ekleme

Laboratuvarın son aşamasında, yeni bir Google Slaytlar sunusu oluşturma, başlık slaytındaki başlığı ve alt başlığı doldurma, ardından biri her veri hücresi, diğeri ise grafik için olmak üzere 2 yeni slayt ekleme konuları ele alınmaktadır.

  1. Slayt kümesini oluşturun: Öncelikle yeni bir slayt kümesi oluşturun, ardından tüm yeni sunularda bulunan varsayılan başlık slaytına bir başlık ve alt başlık ekleyin. Slayt kümesindeki tüm çalışmalar, createSlidePresentation() işlevinde gerçekleşir. Bu işlev, createColumnChart() işlev kodunun hemen ardından gelen bq-sheets-slides.gs kısmına eklenir:
/** * Create presentation with spreadsheet data & chart * @param {Spreadsheet} Spreadsheet with results data * @param {EmbeddedChart} Sheets chart to embed on slide * @returns {Presentation} Slide deck with results */ function createSlidePresentation(spreadsheet, chart) { // Create the new presentation. var deck = SlidesApp.create(QUERY_NAME); // Populate the title slide. var [title, subtitle] = deck.getSlides()[0].getPageElements(); title.asShape().getText().setText(QUERY_NAME); subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' + 'Google Apps Script, BigQuery, Sheets, Slides');
  1. Veri tablosu ekleyin: createSlidePresentation() kodu için sonraki adım, hücredeki verileri Google E-Tablosu'ndan yeni slayt kümesine aktarmaktır. Aşağıdaki kod snippet'ini createSlidePresentation() işlevine ekleyin:
// Data range to copy is from cell A1 to B11 var START_CELL = 'A1'; // include header row var END_CELL = 'B11'; // Add the table slide and insert an empty table on it of // the dimensions of the data range; fails if Sheet empty. var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); var sheetValues = spreadsheet.getSheets()[0].getRange( START_CELL + ':' + END_CELL).getValues(); var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length); // Populate the table with spreadsheet data. for (var i = 0; i < sheetValues.length; i++) { for (var j = 0; j < sheetValues[0].length; j++) { table.getCell(i, j).getText().setText(String(sheetValues[i][j])); } }
  1. Grafiği içe aktarın: createSlidePresentation() için son adım, başka bir slayt ekleyip grafiği e-tablodan içe aktararak Presentation nesnesini döndürmektir. İşleve son olarak aşağıdaki snippet'i ekleyin:
// Add a chart slide and insert the chart on it. var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); chartSlide.insertSheetsChart(chart); // Return the presentation object for later use. return deck; }
  1. Grafiği döndürün: Son işlevin tamamlanmasının ardından imzasını tekrar inceleyin. Evet, createSlidePresentation() için hem e-tablo hem grafik nesnesi gerekir. runQuery()'yi zaten Spreadsheet nesnesini döndürecek şekilde düzenlemiştiniz. Şimdiyse grafik (EmbeddedChart) nesnesini döndürmesi için createColumnChart()'ta benzer bir değişiklik yapmanız gerekiyor. Bu işlemi gerçekleştirmek için uygulamanıza dönün ve createColumnChart()'ın ardına son bir satır daha ekleyin:
// Return chart object for later use return chart; }
  1. createBigQueryPresentation()'ı güncelleyin: createColumnChart(), grafiği döndürdüğü için bu grafiği değişkene kaydetmeniz, ardından hem e-tabloyu hem grafiği createSlidePresentation()'a iletmeniz gerekir. Yeni oluşturulan e-tabloya kaydettiğiniz için URL'yi yeni slayt sunusuna da kaydedebilirsiniz. Şu kod bloğunu silin:
/** * Runs a BigQuery query, adds data and a chart in a Sheet. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); createColumnChart(spreadsheet); }

Yerine aşağıdaki kod bloğunu yapıştırın:

/** * Runs a BigQuery query, adds data and a chart in a Sheet, * and adds the data and chart to a new slide presentation. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); var chart = createColumnChart(spreadsheet); var deck = createSlidePresentation(spreadsheet, chart); Logger.log('Results slide deck created: %s', deck.getUrl()); }

Bu güncellemeleri yaptıktan sonra bq-sheets-slides.gs şu şekilde görünmelidir (PROJECT_ID kısmı hariç):

bq-sheets-slides.gs - final version

// Filename for data results var QUERY_NAME = "Most common words in all of Shakespeare's works"; // Replace this value with your Google Cloud API project ID var PROJECT_ID = '<YOUR_PROJECT_ID>'; if (!PROJECT_ID) throw Error('Project ID is required in setup'); /** * Runs a BigQuery query; puts results into Sheet. You must enable * the BigQuery advanced service before you can run this code. * @see http://developers.google.com/apps-script/advanced/bigquery#run_query * @see http://github.com/gsuitedevs/apps-script-samples/blob/master/advanced/bigquery.gs * * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results * @see http://developers.google.com/apps-script/reference/spreadsheet/spreadsheet */ function runQuery() { // Replace sample with your own BigQuery query. var request = { query: 'SELECT ' + 'LOWER(word) AS word, ' + 'SUM(word_count) AS count ' + 'FROM [bigquery-public-data:samples.shakespeare] ' + 'GROUP BY word ' + 'ORDER BY count ' + 'DESC LIMIT 10' }; var queryResults = BigQuery.Jobs.query(request, PROJECT_ID); var jobId = queryResults.jobReference.jobId; // Wait for BQ job completion (with exponential backoff). var sleepTimeMs = 500; while (!queryResults.jobComplete) { Utilities.sleep(sleepTimeMs); sleepTimeMs *= 2; queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId); } // Get all results from BigQuery. var rows = queryResults.rows; while (queryResults.pageToken) { queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, { pageToken: queryResults.pageToken }); rows = rows.concat(queryResults.rows); } // Return null if no data returned. if (!rows) { return Logger.log('No rows returned.'); } // Create the new results spreadsheet. var spreadsheet = SpreadsheetApp.create(QUERY_NAME); var sheet = spreadsheet.getActiveSheet(); // Add headers to Sheet. var headers = queryResults.schema.fields.map(function(field) { return field.name.toUpperCase(); }); sheet.appendRow(headers); // Append the results. var data = new Array(rows.length); for (var i = 0; i < rows.length; i++) { var cols = rows[i].f; data[i] = new Array(cols.length); for (var j = 0; j < cols.length; j++) { data[i][j] = cols[j].v; } } // Start storing data in row 2, col 1 var START_ROW = 2; // skip header row var START_COL = 1; sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data); // Return the spreadsheet object for later use. return spreadsheet; } /** * Uses spreadsheet data to create columnar chart. * @param {Spreadsheet} Spreadsheet containing results data * @returns {EmbeddedChart} visualizing the results * @see http://developers.google.com/apps-script/reference/spreadsheet/embedded-chart */ function createColumnChart(spreadsheet) { // Retrieve the populated (first and only) Sheet. var sheet = spreadsheet.getSheets()[0]; // Data range in Sheet is from cell A2 to B11 var START_CELL = 'A2'; // skip header row var END_CELL = 'B11'; // Place chart on Sheet starting on cell E5. var START_ROW = 5; // row 5 var START_COL = 5; // col E var OFFSET = 0; // Create & place chart on the Sheet using above params. var chart = sheet.newChart() .setChartType(Charts.ChartType.COLUMN) .addRange(sheet.getRange(START_CELL + ':' + END_CELL)) .setPosition(START_ROW, START_COL, OFFSET, OFFSET) .build(); sheet.insertChart(chart); // Return the chart object for later use. return chart; } /** * Create presentation with spreadsheet data & chart * @param {Spreadsheet} Spreadsheet with results data * @param {EmbeddedChart} Sheets chart to embed on slide * @returns {Presentation} Returns a slide deck with results * @see http://developers.google.com/apps-script/reference/slides/presentation */ function createSlidePresentation(spreadsheet, chart) { // Create the new presentation. var deck = SlidesApp.create(QUERY_NAME); // Populate the title slide. var [title, subtitle] = deck.getSlides()[0].getPageElements(); title.asShape().getText().setText(QUERY_NAME); subtitle.asShape().getText().setText('via GCP and G Suite APIs:\n' + 'Google Apps Script, BigQuery, Sheets, Slides'); // Data range to copy is from cell A1 to B11 var START_CELL = 'A1'; // include header row var END_CELL = 'B11'; // Add the table slide and insert an empty table on it of // the dimensions of the data range; fails if Sheet empty. var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); var sheetValues = spreadsheet.getSheets()[0].getRange( START_CELL + ':' + END_CELL).getValues(); var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length); // Populate the table with spreadsheet data. for (var i = 0; i < sheetValues.length; i++) { for (var j = 0; j < sheetValues[0].length; j++) { table.getCell(i, j).getText().setText(String(sheetValues[i][j])); } } // Add a chart slide and insert the chart on it. var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK); chartSlide.insertSheetsChart(chart); // Return the presentation object for later use. return deck; } /** * Runs a BigQuery query, adds data and a chart in a Sheet, * and adds the data and chart to a new slide presentation. */ function createBigQueryPresentation() { var spreadsheet = runQuery(); Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); var chart = createColumnChart(spreadsheet); var deck = createSlidePresentation(spreadsheet, chart); Logger.log('Results slide deck created: %s', deck.getUrl()); }
  1. createBigQueryPresentation()'ı kaydedip yeniden çalıştırın. Bu işlem yürütülmeden önce Google Slaytlar sunularınızı görüntülemek ve yönetmek için bir grup izin daha vermeniz istenir.
  2. Drive'ım bölümüne gidin. Burada, oluşturulan e-tabloya ek olarak aşağıda gösterilen şekilde 3 slayt (başlık, veri tablosu, veri grafiği) içeren yeni bir Slaytlar sunusunu da görürsünüz:

Shakespeare&#39;in eserlerinde en sık kullanılan kelimeler e-tablosu - başlık slaytı

Shakespeare&#39;in eserlerinde en sık kullanılan kelimeler e-tablosu - veri tablosu slaytı

Shakespeare&#39;in eserlerinde en sık kullanılan kelimeler e-tablosu - veri grafiğinin üçüncü slaytı

Tebrikler!

BigQuery'nin herkese açık veri kümelerinden birini sorgulayan, sonuçları depolamak için yeni bir Google E-Tablosu oluşturan, alınan verilere göre hazırlanmış bir grafik ekleyen ve hem sonuçların hem e-tablodaki grafiğin yer aldığı bir Google Slaytlar sunusu oluşturan bir Google BigQuery isteği gerçekleştirerek Google Cloud'un iki yönünden de yararlanan bir uygulama oluşturdunuz.

Teknik olarak bu işlemleri gerçekleştirdiniz. Daha kapsamlı bir açıklama yapmak gerekirse büyük veri analizinden yola çıkıp paydaşlara sunabileceğiniz bir sonuç elde ettiniz. Üstelik bunların hepsini kodlama yaparak tamamen otomatik şekilde gerçekleştirdiniz. Şimdi bu laboratuvarda öğrendiklerinizi, kendi projelerinize uyacak şekilde özelleştirebilirsiniz.

Görevinizi tamamlama

Bu yönlendirmesiz öğrenim laboratuvarı, Workspace: Veri Entegrasyonları ve Veri Analistleri İçin BigQuery ile İlgili Temel Bilgiler görevlerinin bir parçasıdır. Görevler, bir öğrenme rotasını oluşturan birbiriyle bağlantılı laboratuvar dizilerini ifade eder. Bir görevi tamamladığınızda başarınızın ödülü olarak rozet kazanırsınız. Rozetlerinizi herkese açık hâle getirebilir ve rozetin bağlantısını online özgeçmişinizde veya sosyal medya hesabınızda paylaşabilirsiniz. Bu laboratuvarı içeren herhangi bir göreve kaydolun ve hemen bir tamamlama kredisi kazanın. Tüm mevcut görevleri görmek için Google Cloud Öğrenim Merkezi kataloğuna bakın.

BigQuery becerilerinizi gösterip bilgilerinizi doğrulamak için uygulamalı bir yarışma laboratuvarına katılmak ister misiniz? Söz konusu görevi bitirdikten sonra bu ek yarışma laboratuvarını tamamlayarak özel bir Google Cloud dijital rozeti kazanın.

Daha fazla bilgi

Bu laboratuvarda gösterilen kodlar GitHub'da da bulunabilir. Laboratuvar, kod deposuyla olabildiğince uyumlu hale getirilmiştir. Bu laboratuvarda ele alınan materyalleri daha yakından incelemenize ve Google geliştirici araçlarına programatik şekilde erişmenin diğer yöntemlerini keşfetmenize yardımcı olacak ek kaynaklar aşağıda verilmiştir.

Belgeler

Benzer ve genel amaçlı videolar

  • Google (Apps) ile ilgili bir sır daha (Apps Komut Dosyası'nın tanıtım videosu)
  • Google Haritalar'a e-tablolardan erişme (video)
  • Google Apps Komut Dosyası hakkında diğer içerikler: video kitaplığı
  • Launchpad Online: video serisi
  • G Suite Geliştirici Şovu: video serisi

Benzer ve genel amaçlı haberler ile güncellemeler

Kılavuzun Son Güncellenme Tarihi: 6 Mart 2023

Laboratuvarın Son Test Edilme Tarihi: 6 Mart 2023

Telif Hakkı 2024 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.