Вопрос по google-api, javascript, google-bigquery – Большой запрос Google с JavaScript

4

Я новичок в Google API и JavaScript,

Есть ли у кого-нибудь пример или учебные пособия о том, как я могу подключиться к API Google-Big Query с помощью JavaScript и загрузить данные из примеров таблиц на простую страницу HTML.

Заранее спасибо за это.

Мне удалось подключиться к Google & quot; short-url-api & quot; и проверить это, теперь я пытаюсь соединиться с BigQuery и попытаться выполнить несколько запросов. shabeer90

Ваш Ответ

3   ответа
0

Я нахожу метод аутентификации JavaScript неуклюжим и плохо документированным. Я предлагаю использовать сервис Python для выполнения запроса. Вы можете предварительно загрузить свои учетные данные с помощью сервиса.

Проверьте этот пример:

https://vida.io/documents/icwvp4qcCbEkYW2ve

$.post("https://pyapi-vida.herokuapp.com/bigquery", "SELECT * FROM [nyc_taxi_public.total_amount_month] LIMIT 1000", function(result) {
  result.forEach(function(d) {
    bqData.push({"date": d3.time.format("%m/%Y").parse(d[0]),
        "amount": +d[1]});
  });

  drawLineChart(bqData);
});
Преимущество использования JavaScript заключается в том, что вы можете напрямую вызывать API и избегать дополнительных запросов к вашему внутреннему серверу.
Я сделал пример, используя Google JavaScript API.vida.io/documents/6iwKZfJRzMrSCGaT6, Вам необходимо настроить аутентификацию. Создатель Viz должен знать, как настроить общий доступ. При загрузке пользователю необходимо войти в систему с учетной записью Google. Я думаю, что UX немного сбивает с толку. Вы просматриваете визуализацию, она запрашивает ваш аккаунт Google. Я думаю, что лучше контролировать авторизацию на уровне визуализации.
9

Попробуйте что-то вроде этого:

<html>
  <head>
    <script src="https://apis.google.com/js/client.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script>
      // User Submitted Variables
      var project_id = 'XXXXXXXXXXX';
      var client_id = 'XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com';

      var config = {
        'client_id': client_id,
        'scope': 'https://www.googleapis.com/auth/bigquery'
      };

      function showProjects() {
        var request = gapi.client.bigquery.projects.list();
        request.execute(function(response) {     
            $('#result_box').html(JSON.stringify(response, null));
        });
      }

      function showDatasets() {
        var request = gapi.client.bigquery.datasets.list({
          'projectId':'publicdata'
        });
        request.execute(function(response) {     
            $('#result_box').html(JSON.stringify(response.result.datasets, null));
        });
      }

      function runQuery() {
       var request = gapi.client.bigquery.jobs.query({
          'projectId': project_id,
          'timeoutMs': '30000',
          'query': 'SELECT TOP(repository_language, 5) as language, COUNT(*) as count FROM [publicdata:samples.github_timeline] WHERE repository_language != "";'
        });
        request.execute(function(response) {     
            console.log(response);
            $('#result_box').html(JSON.stringify(response.result.rows, null));
        });
      }

      function auth() {
        gapi.auth.authorize(config, function() {
            gapi.client.load('bigquery', 'v2');
            $('#client_initiated').html('BigQuery client initiated');
            $('#auth_button').fadeOut();
            $('#projects_button').fadeIn();
            $('#dataset_button').fadeIn();
            $('#query_button').fadeIn();
        });
      }

    </script>
  </head>

  <body>
    <h2>BigQuery + JavaScript Example</h2>
    <button id="auth_button" onclick="auth();">Authorize</button>
    <div id="client_initiated"></div>
    <button id="projects_button" style="display:none;" onclick="showProjects();">Show Projects</button>
    <button id="dataset_button" style="display:none;" onclick="showDatasets();">Show datasets</button>
    <button id="query_button" style="display:none;" onclick="runQuery();">Run Query</button>
    <div id="result_box"></div>
  </body>
</html>
Большое спасибо за этот код, мне удалось создать нечто подобное, но не так просто, как это. Есть ли в любом случае, мы можем отключить всплывающее окно авторизации (не с "немедленным: ложным"), так что внешний пользователь может запросить из нашего набора данных без необходимости входа в систему с учетной записью Gmail, shabeer90
2

К вашему сведению, вы можете попробовать библиотеку JavaScript, доступную здесь: https://developers.google.com/bigquery/docs/libraries

Спасибо за ссылку, я следил за этими образцами. и те, кажется, работают нормально, но я не могу запросить из API BigQuery. shabeer90

Похожие вопросы