google-cloud-bigquery 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/google/cloud/bigquery.rb +33 -32
 - data/lib/google/cloud/bigquery/convert.rb +258 -0
 - data/lib/google/cloud/bigquery/data.rb +20 -44
 - data/lib/google/cloud/bigquery/dataset.rb +49 -65
 - data/lib/google/cloud/bigquery/project.rb +42 -44
 - data/lib/google/cloud/bigquery/query_data.rb +9 -8
 - data/lib/google/cloud/bigquery/schema.rb +151 -179
 - data/lib/google/cloud/bigquery/schema/field.rb +498 -0
 - data/lib/google/cloud/bigquery/service.rb +11 -105
 - data/lib/google/cloud/bigquery/table.rb +130 -6
 - data/lib/google/cloud/bigquery/time.rb +2 -2
 - data/lib/google/cloud/bigquery/version.rb +1 -1
 - data/lib/google/cloud/bigquery/view.rb +36 -7
 - metadata +11 -9
 
| 
         @@ -302,9 +302,6 @@ module Google 
     | 
|
| 
       302 
302 
     | 
    
         
             
                    #   length is 1,024 characters.
         
     | 
| 
       303 
303 
     | 
    
         
             
                    # @param [String] name A descriptive name for the table.
         
     | 
| 
       304 
304 
     | 
    
         
             
                    # @param [String] description A user-friendly description of the table.
         
     | 
| 
       305 
     | 
    
         
            -
                    # @param [Array<Schema::Field>] fields An array of Schema::Field objects
         
     | 
| 
       306 
     | 
    
         
            -
                    #   specifying the schema's data types for the table. The schema may
         
     | 
| 
       307 
     | 
    
         
            -
                    #   also be configured when passing a block.
         
     | 
| 
       308 
305 
     | 
    
         
             
                    # @yield [table] a block for setting the table
         
     | 
| 
       309 
306 
     | 
    
         
             
                    # @yieldparam [Table] table the table object to be updated
         
     | 
| 
       310 
307 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -326,26 +323,6 @@ module Google 
     | 
|
| 
       326 
323 
     | 
    
         
             
                    #                                name: "My Table",
         
     | 
| 
       327 
324 
     | 
    
         
             
                    #                                description: "A description of table."
         
     | 
| 
       328 
325 
     | 
    
         
             
                    #
         
     | 
| 
       329 
     | 
    
         
            -
                    # @example The table's schema fields can be passed as an argument.
         
     | 
| 
       330 
     | 
    
         
            -
                    #   require "google/cloud/bigquery"
         
     | 
| 
       331 
     | 
    
         
            -
                    #
         
     | 
| 
       332 
     | 
    
         
            -
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       333 
     | 
    
         
            -
                    #   dataset = bigquery.dataset "my_dataset"
         
     | 
| 
       334 
     | 
    
         
            -
                    #
         
     | 
| 
       335 
     | 
    
         
            -
                    #   schema_fields = [
         
     | 
| 
       336 
     | 
    
         
            -
                    #     Google::Cloud::Bigquery::Schema::Field.new(
         
     | 
| 
       337 
     | 
    
         
            -
                    #       "first_name", :string, mode: :required),
         
     | 
| 
       338 
     | 
    
         
            -
                    #     Google::Cloud::Bigquery::Schema::Field.new(
         
     | 
| 
       339 
     | 
    
         
            -
                    #       "cities_lived", :record, mode: :repeated,
         
     | 
| 
       340 
     | 
    
         
            -
                    #       fields: [
         
     | 
| 
       341 
     | 
    
         
            -
                    #         Google::Cloud::Bigquery::Schema::Field.new(
         
     | 
| 
       342 
     | 
    
         
            -
                    #           "place", :string, mode: :required),
         
     | 
| 
       343 
     | 
    
         
            -
                    #         Google::Cloud::Bigquery::Schema::Field.new(
         
     | 
| 
       344 
     | 
    
         
            -
                    #           "number_of_years", :integer, mode: :required),
         
     | 
| 
       345 
     | 
    
         
            -
                    #         ])
         
     | 
| 
       346 
     | 
    
         
            -
                    #   ]
         
     | 
| 
       347 
     | 
    
         
            -
                    #   table = dataset.create_table "my_table", fields: schema_fields
         
     | 
| 
       348 
     | 
    
         
            -
                    #
         
     | 
| 
       349 
326 
     | 
    
         
             
                    # @example Or the table's schema can be configured with the block.
         
     | 
| 
       350 
327 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
       351 
328 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -379,7 +356,7 @@ module Google 
     | 
|
| 
       379 
356 
     | 
    
         
             
                    #
         
     | 
| 
       380 
357 
     | 
    
         
             
                    # @!group Table
         
     | 
| 
       381 
358 
     | 
    
         
             
                    #
         
     | 
| 
       382 
     | 
    
         
            -
                    def create_table table_id, name: nil, description: nil 
     | 
| 
      
 359 
     | 
    
         
            +
                    def create_table table_id, name: nil, description: nil
         
     | 
| 
       383 
360 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       384 
361 
     | 
    
         
             
                      new_tb = Google::Apis::BigqueryV2::Table.new(
         
     | 
| 
       385 
362 
     | 
    
         
             
                        table_reference: Google::Apis::BigqueryV2::TableReference.new(
         
     | 
| 
         @@ -388,7 +365,6 @@ module Google 
     | 
|
| 
       388 
365 
     | 
    
         
             
                      updater = Table::Updater.new(new_tb).tap do |tb|
         
     | 
| 
       389 
366 
     | 
    
         
             
                        tb.name = name unless name.nil?
         
     | 
| 
       390 
367 
     | 
    
         
             
                        tb.description = description unless description.nil?
         
     | 
| 
       391 
     | 
    
         
            -
                        tb.schema.fields = fields unless fields.nil?
         
     | 
| 
       392 
368 
     | 
    
         
             
                      end
         
     | 
| 
       393 
369 
     | 
    
         | 
| 
       394 
370 
     | 
    
         
             
                      yield updater if block_given?
         
     | 
| 
         @@ -407,6 +383,14 @@ module Google 
     | 
|
| 
       407 
383 
     | 
    
         
             
                    #   is referenced.
         
     | 
| 
       408 
384 
     | 
    
         
             
                    # @param [String] name A descriptive name for the table.
         
     | 
| 
       409 
385 
     | 
    
         
             
                    # @param [String] description A user-friendly description of the table.
         
     | 
| 
      
 386 
     | 
    
         
            +
                    # @param [Boolean] standard_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 387 
     | 
    
         
            +
                    #   [standard
         
     | 
| 
      
 388 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
      
 389 
     | 
    
         
            +
                    #   dialect. Optional. The default value is true.
         
     | 
| 
      
 390 
     | 
    
         
            +
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 391 
     | 
    
         
            +
                    #   [legacy
         
     | 
| 
      
 392 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
      
 393 
     | 
    
         
            +
                    #   dialect. Optional. The default value is false.
         
     | 
| 
       410 
394 
     | 
    
         
             
                    #
         
     | 
| 
       411 
395 
     | 
    
         
             
                    # @return [Google::Cloud::Bigquery::View]
         
     | 
| 
       412 
396 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -416,7 +400,7 @@ module Google 
     | 
|
| 
       416 
400 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       417 
401 
     | 
    
         
             
                    #   dataset = bigquery.dataset "my_dataset"
         
     | 
| 
       418 
402 
     | 
    
         
             
                    #   view = dataset.create_view "my_view",
         
     | 
| 
       419 
     | 
    
         
            -
                    #             "SELECT name, age FROM  
     | 
| 
      
 403 
     | 
    
         
            +
                    #             "SELECT name, age FROM proj.dataset.users"
         
     | 
| 
       420 
404 
     | 
    
         
             
                    #
         
     | 
| 
       421 
405 
     | 
    
         
             
                    # @example A name and description can be provided:
         
     | 
| 
       422 
406 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
         @@ -424,12 +408,13 @@ module Google 
     | 
|
| 
       424 
408 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       425 
409 
     | 
    
         
             
                    #   dataset = bigquery.dataset "my_dataset"
         
     | 
| 
       426 
410 
     | 
    
         
             
                    #   view = dataset.create_view "my_view",
         
     | 
| 
       427 
     | 
    
         
            -
                    #             "SELECT name, age FROM  
     | 
| 
      
 411 
     | 
    
         
            +
                    #             "SELECT name, age FROM proj.dataset.users",
         
     | 
| 
       428 
412 
     | 
    
         
             
                    #             name: "My View", description: "This is my view"
         
     | 
| 
       429 
413 
     | 
    
         
             
                    #
         
     | 
| 
       430 
414 
     | 
    
         
             
                    # @!group Table
         
     | 
| 
       431 
415 
     | 
    
         
             
                    #
         
     | 
| 
       432 
     | 
    
         
            -
                    def create_view table_id, query, name: nil, description: nil
         
     | 
| 
      
 416 
     | 
    
         
            +
                    def create_view table_id, query, name: nil, description: nil,
         
     | 
| 
      
 417 
     | 
    
         
            +
                                    standard_sql: nil, legacy_sql: nil
         
     | 
| 
       433 
418 
     | 
    
         
             
                      new_view_opts = {
         
     | 
| 
       434 
419 
     | 
    
         
             
                        table_reference: Google::Apis::BigqueryV2::TableReference.new(
         
     | 
| 
       435 
420 
     | 
    
         
             
                          project_id: project_id, dataset_id: dataset_id, table_id: table_id
         
     | 
| 
         @@ -437,7 +422,9 @@ module Google 
     | 
|
| 
       437 
422 
     | 
    
         
             
                        friendly_name: name,
         
     | 
| 
       438 
423 
     | 
    
         
             
                        description: description,
         
     | 
| 
       439 
424 
     | 
    
         
             
                        view: Google::Apis::BigqueryV2::ViewDefinition.new(
         
     | 
| 
       440 
     | 
    
         
            -
                          query: query
         
     | 
| 
      
 425 
     | 
    
         
            +
                          query: query,
         
     | 
| 
      
 426 
     | 
    
         
            +
                          use_legacy_sql: Convert.resolve_legacy_sql(standard_sql,
         
     | 
| 
      
 427 
     | 
    
         
            +
                                                                     legacy_sql)
         
     | 
| 
       441 
428 
     | 
    
         
             
                        )
         
     | 
| 
       442 
429 
     | 
    
         
             
                      }.delete_if { |_, v| v.nil? }
         
     | 
| 
       443 
430 
     | 
    
         
             
                      new_view = Google::Apis::BigqueryV2::Table.new new_view_opts
         
     | 
| 
         @@ -579,31 +566,28 @@ module Google 
     | 
|
| 
       579 
566 
     | 
    
         
             
                    #   * `append` - BigQuery appends the data to the table.
         
     | 
| 
       580 
567 
     | 
    
         
             
                    #   * `empty` - A 'duplicate' error is returned in the job result if the
         
     | 
| 
       581 
568 
     | 
    
         
             
                    #     table exists and contains data.
         
     | 
| 
       582 
     | 
    
         
            -
                    # @param [Boolean] large_results If `true`, allows the query to produce
         
     | 
| 
       583 
     | 
    
         
            -
                    #   arbitrarily large result tables at a slight cost in performance.
         
     | 
| 
       584 
     | 
    
         
            -
                    #   Requires `table` parameter to be set.
         
     | 
| 
       585 
     | 
    
         
            -
                    # @param [Boolean] flatten Flattens all nested and repeated fields in
         
     | 
| 
       586 
     | 
    
         
            -
                    #   the query results. The default value is `true`. `large_results`
         
     | 
| 
       587 
     | 
    
         
            -
                    #   parameter must be `true` if this is set to `false`.
         
     | 
| 
       588 
     | 
    
         
            -
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
       589 
     | 
    
         
            -
                    #   [legacy
         
     | 
| 
       590 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       591 
     | 
    
         
            -
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
       592 
     | 
    
         
            -
                    #   BigQuery's [standard
         
     | 
| 
       593 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       594 
     | 
    
         
            -
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
       595 
     | 
    
         
            -
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
       596 
     | 
    
         
            -
                    #   `flatten` is false. Optional. The default value is true.
         
     | 
| 
       597 
569 
     | 
    
         
             
                    # @param [Boolean] standard_sql Specifies whether to use BigQuery's
         
     | 
| 
       598 
570 
     | 
    
         
             
                    #   [standard
         
     | 
| 
       599 
571 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       600 
572 
     | 
    
         
             
                    #   dialect for this query. If set to true, the query will use standard
         
     | 
| 
       601 
573 
     | 
    
         
             
                    #   SQL rather than the [legacy
         
     | 
| 
       602 
574 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       603 
     | 
    
         
            -
                    #   dialect.  
     | 
| 
       604 
     | 
    
         
            -
                    # 
     | 
| 
       605 
     | 
    
         
            -
                    #    
     | 
| 
       606 
     | 
    
         
            -
                    #    
     | 
| 
      
 575 
     | 
    
         
            +
                    #   dialect. Optional. The default value is true.
         
     | 
| 
      
 576 
     | 
    
         
            +
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 577 
     | 
    
         
            +
                    #   [legacy
         
     | 
| 
      
 578 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
      
 579 
     | 
    
         
            +
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
      
 580 
     | 
    
         
            +
                    #   BigQuery's [standard
         
     | 
| 
      
 581 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
      
 582 
     | 
    
         
            +
                    #   dialect. Optional. The default value is false.
         
     | 
| 
      
 583 
     | 
    
         
            +
                    # @param [Boolean] large_results This option is specific to Legacy SQL.
         
     | 
| 
      
 584 
     | 
    
         
            +
                    #   If `true`, allows the query to produce arbitrarily large result
         
     | 
| 
      
 585 
     | 
    
         
            +
                    #   tables at a slight cost in performance. Requires `table` parameter
         
     | 
| 
      
 586 
     | 
    
         
            +
                    #   to be set.
         
     | 
| 
      
 587 
     | 
    
         
            +
                    # @param [Boolean] flatten This option is specific to Legacy SQL.
         
     | 
| 
      
 588 
     | 
    
         
            +
                    #   Flattens all nested and repeated fields in the query results. The
         
     | 
| 
      
 589 
     | 
    
         
            +
                    #   default value is `true`. `large_results` parameter must be `true` if
         
     | 
| 
      
 590 
     | 
    
         
            +
                    #   this is set to `false`.
         
     | 
| 
       607 
591 
     | 
    
         
             
                    #
         
     | 
| 
       608 
592 
     | 
    
         
             
                    # @return [Google::Cloud::Bigquery::QueryJob]
         
     | 
| 
       609 
593 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -621,13 +605,13 @@ module Google 
     | 
|
| 
       621 
605 
     | 
    
         
             
                    #     end
         
     | 
| 
       622 
606 
     | 
    
         
             
                    #   end
         
     | 
| 
       623 
607 
     | 
    
         
             
                    #
         
     | 
| 
       624 
     | 
    
         
            -
                    # @example Query using  
     | 
| 
      
 608 
     | 
    
         
            +
                    # @example Query using legacy SQL:
         
     | 
| 
       625 
609 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
       626 
610 
     | 
    
         
             
                    #
         
     | 
| 
       627 
611 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       628 
612 
     | 
    
         
             
                    #
         
     | 
| 
       629 
613 
     | 
    
         
             
                    #   job = bigquery.query_job "SELECT name FROM my_table",
         
     | 
| 
       630 
     | 
    
         
            -
                    #                             
     | 
| 
      
 614 
     | 
    
         
            +
                    #                            legacy_sql: true
         
     | 
| 
       631 
615 
     | 
    
         
             
                    #
         
     | 
| 
       632 
616 
     | 
    
         
             
                    #   job.wait_until_done!
         
     | 
| 
       633 
617 
     | 
    
         
             
                    #   if !job.failed?
         
     | 
| 
         @@ -669,8 +653,8 @@ module Google 
     | 
|
| 
       669 
653 
     | 
    
         
             
                    # @!group Data
         
     | 
| 
       670 
654 
     | 
    
         
             
                    #
         
     | 
| 
       671 
655 
     | 
    
         
             
                    def query_job query, params: nil, priority: "INTERACTIVE", cache: true,
         
     | 
| 
       672 
     | 
    
         
            -
                                  table: nil, create: nil, write: nil,  
     | 
| 
       673 
     | 
    
         
            -
                                   
     | 
| 
      
 656 
     | 
    
         
            +
                                  table: nil, create: nil, write: nil, standard_sql: nil,
         
     | 
| 
      
 657 
     | 
    
         
            +
                                  legacy_sql: nil, large_results: nil, flatten: nil
         
     | 
| 
       674 
658 
     | 
    
         
             
                      options = { priority: priority, cache: cache, table: table,
         
     | 
| 
       675 
659 
     | 
    
         
             
                                  create: create, write: write,
         
     | 
| 
       676 
660 
     | 
    
         
             
                                  large_results: large_results, flatten: flatten,
         
     | 
| 
         @@ -741,15 +725,6 @@ module Google 
     | 
|
| 
       741 
725 
     | 
    
         
             
                    #   whenever tables in the query are modified. The default value is
         
     | 
| 
       742 
726 
     | 
    
         
             
                    #   true. For more information, see [query
         
     | 
| 
       743 
727 
     | 
    
         
             
                    #   caching](https://developers.google.com/bigquery/querying-data).
         
     | 
| 
       744 
     | 
    
         
            -
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
       745 
     | 
    
         
            -
                    #   [legacy
         
     | 
| 
       746 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       747 
     | 
    
         
            -
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
       748 
     | 
    
         
            -
                    #   BigQuery's [standard
         
     | 
| 
       749 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       750 
     | 
    
         
            -
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
       751 
     | 
    
         
            -
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
       752 
     | 
    
         
            -
                    #   `flatten` is false. Optional. The default value is true.
         
     | 
| 
       753 
728 
     | 
    
         
             
                    # @param [Boolean] standard_sql Specifies whether to use BigQuery's
         
     | 
| 
       754 
729 
     | 
    
         
             
                    #   [standard
         
     | 
| 
       755 
730 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
         @@ -759,7 +734,16 @@ module Google 
     | 
|
| 
       759 
734 
     | 
    
         
             
                    #   dialect. When set to true, the values of `large_results` and
         
     | 
| 
       760 
735 
     | 
    
         
             
                    #   `flatten` are ignored; the query will be run as if `large_results`
         
     | 
| 
       761 
736 
     | 
    
         
             
                    #   is true and `flatten` is false. Optional. The default value is
         
     | 
| 
       762 
     | 
    
         
            -
                    #    
     | 
| 
      
 737 
     | 
    
         
            +
                    #   true.
         
     | 
| 
      
 738 
     | 
    
         
            +
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 739 
     | 
    
         
            +
                    #   [legacy
         
     | 
| 
      
 740 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
      
 741 
     | 
    
         
            +
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
      
 742 
     | 
    
         
            +
                    #   BigQuery's [standard
         
     | 
| 
      
 743 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
      
 744 
     | 
    
         
            +
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
      
 745 
     | 
    
         
            +
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
      
 746 
     | 
    
         
            +
                    #   `flatten` is false. Optional. The default value is false.
         
     | 
| 
       763 
747 
     | 
    
         
             
                    #
         
     | 
| 
       764 
748 
     | 
    
         
             
                    # @return [Google::Cloud::Bigquery::QueryData]
         
     | 
| 
       765 
749 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -774,13 +758,13 @@ module Google 
     | 
|
| 
       774 
758 
     | 
    
         
             
                    #     puts row["name"]
         
     | 
| 
       775 
759 
     | 
    
         
             
                    #   end
         
     | 
| 
       776 
760 
     | 
    
         
             
                    #
         
     | 
| 
       777 
     | 
    
         
            -
                    # @example Query using  
     | 
| 
      
 761 
     | 
    
         
            +
                    # @example Query using legacy SQL:
         
     | 
| 
       778 
762 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
       779 
763 
     | 
    
         
             
                    #
         
     | 
| 
       780 
764 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       781 
765 
     | 
    
         
             
                    #
         
     | 
| 
       782 
766 
     | 
    
         
             
                    #   data = bigquery.query "SELECT name FROM my_table",
         
     | 
| 
       783 
     | 
    
         
            -
                    #                          
     | 
| 
      
 767 
     | 
    
         
            +
                    #                         legacy_sql: true
         
     | 
| 
       784 
768 
     | 
    
         
             
                    #
         
     | 
| 
       785 
769 
     | 
    
         
             
                    #   data.each do |row|
         
     | 
| 
       786 
770 
     | 
    
         
             
                    #     puts row["name"]
         
     | 
| 
         @@ -813,7 +797,7 @@ module Google 
     | 
|
| 
       813 
797 
     | 
    
         
             
                    # @!group Data
         
     | 
| 
       814 
798 
     | 
    
         
             
                    #
         
     | 
| 
       815 
799 
     | 
    
         
             
                    def query query, params: nil, max: nil, timeout: 10000, dryrun: nil,
         
     | 
| 
       816 
     | 
    
         
            -
                              cache: true,  
     | 
| 
      
 800 
     | 
    
         
            +
                              cache: true, standard_sql: nil, legacy_sql: nil
         
     | 
| 
       817 
801 
     | 
    
         
             
                      options = { max: max, timeout: timeout, dryrun: dryrun, cache: cache,
         
     | 
| 
       818 
802 
     | 
    
         
             
                                  legacy_sql: legacy_sql, standard_sql: standard_sql,
         
     | 
| 
       819 
803 
     | 
    
         
             
                                  params: params }
         
     | 
| 
         @@ -158,30 +158,28 @@ module Google 
     | 
|
| 
       158 
158 
     | 
    
         
             
                    # @param [Boolean] large_results If `true`, allows the query to produce
         
     | 
| 
       159 
159 
     | 
    
         
             
                    #   arbitrarily large result tables at a slight cost in performance.
         
     | 
| 
       160 
160 
     | 
    
         
             
                    #   Requires `table` parameter to be set.
         
     | 
| 
       161 
     | 
    
         
            -
                    # @param [Boolean] flatten Flattens all nested and repeated fields in
         
     | 
| 
       162 
     | 
    
         
            -
                    #   the query results. The default value is `true`. `large_results`
         
     | 
| 
       163 
     | 
    
         
            -
                    #   parameter must be `true` if this is set to `false`.
         
     | 
| 
       164 
     | 
    
         
            -
                    # @param [Dataset, String] dataset Specifies the default dataset to use
         
     | 
| 
       165 
     | 
    
         
            -
                    #   for unqualified table names in the query.
         
     | 
| 
       166 
     | 
    
         
            -
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
       167 
     | 
    
         
            -
                    #   [legacy
         
     | 
| 
       168 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       169 
     | 
    
         
            -
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
       170 
     | 
    
         
            -
                    #   BigQuery's [standard
         
     | 
| 
       171 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       172 
     | 
    
         
            -
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
       173 
     | 
    
         
            -
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
       174 
     | 
    
         
            -
                    #   `flatten` is false. Optional. The default value is true.
         
     | 
| 
       175 
161 
     | 
    
         
             
                    # @param [Boolean] standard_sql Specifies whether to use BigQuery's
         
     | 
| 
       176 
162 
     | 
    
         
             
                    #   [standard
         
     | 
| 
       177 
163 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       178 
164 
     | 
    
         
             
                    #   dialect for this query. If set to true, the query will use standard
         
     | 
| 
       179 
165 
     | 
    
         
             
                    #   SQL rather than the [legacy
         
     | 
| 
       180 
166 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       181 
     | 
    
         
            -
                    #   dialect.  
     | 
| 
       182 
     | 
    
         
            -
                    # 
     | 
| 
       183 
     | 
    
         
            -
                    #    
     | 
| 
       184 
     | 
    
         
            -
                    #    
     | 
| 
      
 167 
     | 
    
         
            +
                    #   dialect. Optional. The default value is true.
         
     | 
| 
      
 168 
     | 
    
         
            +
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 169 
     | 
    
         
            +
                    #   [legacy
         
     | 
| 
      
 170 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
      
 171 
     | 
    
         
            +
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
      
 172 
     | 
    
         
            +
                    #   BigQuery's [standard
         
     | 
| 
      
 173 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
      
 174 
     | 
    
         
            +
                    #   dialect. Optional. The default value is false.
         
     | 
| 
      
 175 
     | 
    
         
            +
                    # @param [Boolean] large_results This option is specific to Legacy SQL.
         
     | 
| 
      
 176 
     | 
    
         
            +
                    #   If `true`, allows the query to produce arbitrarily large result
         
     | 
| 
      
 177 
     | 
    
         
            +
                    #   tables at a slight cost in performance. Requires `table` parameter
         
     | 
| 
      
 178 
     | 
    
         
            +
                    #   to be set.
         
     | 
| 
      
 179 
     | 
    
         
            +
                    # @param [Boolean] flatten This option is specific to Legacy SQL.
         
     | 
| 
      
 180 
     | 
    
         
            +
                    #   Flattens all nested and repeated fields in the query results. The
         
     | 
| 
      
 181 
     | 
    
         
            +
                    #   default value is `true`. `large_results` parameter must be `true` if
         
     | 
| 
      
 182 
     | 
    
         
            +
                    #   this is set to `false`.
         
     | 
| 
       185 
183 
     | 
    
         
             
                    #
         
     | 
| 
       186 
184 
     | 
    
         
             
                    # @return [Google::Cloud::Bigquery::QueryJob]
         
     | 
| 
       187 
185 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -200,14 +198,14 @@ module Google 
     | 
|
| 
       200 
198 
     | 
    
         
             
                    #     end
         
     | 
| 
       201 
199 
     | 
    
         
             
                    #   end
         
     | 
| 
       202 
200 
     | 
    
         
             
                    #
         
     | 
| 
       203 
     | 
    
         
            -
                    # @example Query using  
     | 
| 
      
 201 
     | 
    
         
            +
                    # @example Query using legacy SQL:
         
     | 
| 
       204 
202 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
       205 
203 
     | 
    
         
             
                    #
         
     | 
| 
       206 
204 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       207 
205 
     | 
    
         
             
                    #
         
     | 
| 
       208 
206 
     | 
    
         
             
                    #   job = bigquery.query_job "SELECT name FROM " \
         
     | 
| 
       209 
207 
     | 
    
         
             
                    #                            "`my_proj.my_data.my_table`",
         
     | 
| 
       210 
     | 
    
         
            -
                    #                             
     | 
| 
      
 208 
     | 
    
         
            +
                    #                            legacy_sql: true
         
     | 
| 
       211 
209 
     | 
    
         
             
                    #
         
     | 
| 
       212 
210 
     | 
    
         
             
                    #   job.wait_until_done!
         
     | 
| 
       213 
211 
     | 
    
         
             
                    #   if !job.failed?
         
     | 
| 
         @@ -251,9 +249,9 @@ module Google 
     | 
|
| 
       251 
249 
     | 
    
         
             
                    #   end
         
     | 
| 
       252 
250 
     | 
    
         
             
                    #
         
     | 
| 
       253 
251 
     | 
    
         
             
                    def query_job query, params: nil, priority: "INTERACTIVE", cache: true,
         
     | 
| 
       254 
     | 
    
         
            -
                                  table: nil, create: nil, write: nil,  
     | 
| 
       255 
     | 
    
         
            -
                                   
     | 
| 
       256 
     | 
    
         
            -
                                   
     | 
| 
      
 252 
     | 
    
         
            +
                                  table: nil, create: nil, write: nil, dataset: nil,
         
     | 
| 
      
 253 
     | 
    
         
            +
                                  standard_sql: nil, legacy_sql: nil, large_results: nil,
         
     | 
| 
      
 254 
     | 
    
         
            +
                                  flatten: nil
         
     | 
| 
       257 
255 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       258 
256 
     | 
    
         
             
                      options = { priority: priority, cache: cache, table: table,
         
     | 
| 
       259 
257 
     | 
    
         
             
                                  create: create, write: write,
         
     | 
| 
         @@ -327,15 +325,6 @@ module Google 
     | 
|
| 
       327 
325 
     | 
    
         
             
                    # @param [String] project Specifies the default projectId to assume for
         
     | 
| 
       328 
326 
     | 
    
         
             
                    #   any unqualified table names in the query. Only used if `dataset`
         
     | 
| 
       329 
327 
     | 
    
         
             
                    #   option is set.
         
     | 
| 
       330 
     | 
    
         
            -
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
       331 
     | 
    
         
            -
                    #   [legacy
         
     | 
| 
       332 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
       333 
     | 
    
         
            -
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
       334 
     | 
    
         
            -
                    #   BigQuery's [standard
         
     | 
| 
       335 
     | 
    
         
            -
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
       336 
     | 
    
         
            -
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
       337 
     | 
    
         
            -
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
       338 
     | 
    
         
            -
                    #   `flatten` is false. Optional. The default value is true.
         
     | 
| 
       339 
328 
     | 
    
         
             
                    # @param [Boolean] standard_sql Specifies whether to use BigQuery's
         
     | 
| 
       340 
329 
     | 
    
         
             
                    #   [standard
         
     | 
| 
       341 
330 
     | 
    
         
             
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
         @@ -345,7 +334,16 @@ module Google 
     | 
|
| 
       345 
334 
     | 
    
         
             
                    #   dialect. When set to true, the values of `large_results` and
         
     | 
| 
       346 
335 
     | 
    
         
             
                    #   `flatten` are ignored; the query will be run as if `large_results`
         
     | 
| 
       347 
336 
     | 
    
         
             
                    #   is true and `flatten` is false. Optional. The default value is
         
     | 
| 
       348 
     | 
    
         
            -
                    #    
     | 
| 
      
 337 
     | 
    
         
            +
                    #   true.
         
     | 
| 
      
 338 
     | 
    
         
            +
                    # @param [Boolean] legacy_sql Specifies whether to use BigQuery's
         
     | 
| 
      
 339 
     | 
    
         
            +
                    #   [legacy
         
     | 
| 
      
 340 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
         
     | 
| 
      
 341 
     | 
    
         
            +
                    #   dialect for this query. If set to false, the query will use
         
     | 
| 
      
 342 
     | 
    
         
            +
                    #   BigQuery's [standard
         
     | 
| 
      
 343 
     | 
    
         
            +
                    #   SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
         
     | 
| 
      
 344 
     | 
    
         
            +
                    #   When set to false, the values of `large_results` and `flatten` are
         
     | 
| 
      
 345 
     | 
    
         
            +
                    #   ignored; the query will be run as if `large_results` is true and
         
     | 
| 
      
 346 
     | 
    
         
            +
                    #   `flatten` is false. Optional. The default value is false.
         
     | 
| 
       349 
347 
     | 
    
         
             
                    #
         
     | 
| 
       350 
348 
     | 
    
         
             
                    # @return [Google::Cloud::Bigquery::QueryData]
         
     | 
| 
       351 
349 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -354,19 +352,19 @@ module Google 
     | 
|
| 
       354 
352 
     | 
    
         
             
                    #
         
     | 
| 
       355 
353 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       356 
354 
     | 
    
         
             
                    #
         
     | 
| 
       357 
     | 
    
         
            -
                    #   data = bigquery.query "SELECT name FROM  
     | 
| 
      
 355 
     | 
    
         
            +
                    #   data = bigquery.query "SELECT name FROM `my_proj.my_data.my_table`"
         
     | 
| 
       358 
356 
     | 
    
         
             
                    #
         
     | 
| 
       359 
357 
     | 
    
         
             
                    #   data.each do |row|
         
     | 
| 
       360 
358 
     | 
    
         
             
                    #     puts row["name"]
         
     | 
| 
       361 
359 
     | 
    
         
             
                    #   end
         
     | 
| 
       362 
360 
     | 
    
         
             
                    #
         
     | 
| 
       363 
     | 
    
         
            -
                    # @example Query using  
     | 
| 
      
 361 
     | 
    
         
            +
                    # @example Query using legacy SQL:
         
     | 
| 
       364 
362 
     | 
    
         
             
                    #   require "google/cloud/bigquery"
         
     | 
| 
       365 
363 
     | 
    
         
             
                    #
         
     | 
| 
       366 
364 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       367 
365 
     | 
    
         
             
                    #
         
     | 
| 
       368 
     | 
    
         
            -
                    #   data = bigquery.query "SELECT name FROM  
     | 
| 
       369 
     | 
    
         
            -
                    #                          
     | 
| 
      
 366 
     | 
    
         
            +
                    #   data = bigquery.query "SELECT name FROM [my_proj:my_data.my_table]",
         
     | 
| 
      
 367 
     | 
    
         
            +
                    #                         legacy_sql: true
         
     | 
| 
       370 
368 
     | 
    
         
             
                    #
         
     | 
| 
       371 
369 
     | 
    
         
             
                    #   data.each do |row|
         
     | 
| 
       372 
370 
     | 
    
         
             
                    #     puts row["name"]
         
     | 
| 
         @@ -377,7 +375,7 @@ module Google 
     | 
|
| 
       377 
375 
     | 
    
         
             
                    #
         
     | 
| 
       378 
376 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       379 
377 
     | 
    
         
             
                    #
         
     | 
| 
       380 
     | 
    
         
            -
                    #   data = bigquery.query "SELECT name FROM  
     | 
| 
      
 378 
     | 
    
         
            +
                    #   data = bigquery.query "SELECT name FROM `my_proj.my_data.my_table`"
         
     | 
| 
       381 
379 
     | 
    
         
             
                    #
         
     | 
| 
       382 
380 
     | 
    
         
             
                    #   data.all do |row|
         
     | 
| 
       383 
381 
     | 
    
         
             
                    #     puts row["name"]
         
     | 
| 
         @@ -389,7 +387,7 @@ module Google 
     | 
|
| 
       389 
387 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       390 
388 
     | 
    
         
             
                    #
         
     | 
| 
       391 
389 
     | 
    
         
             
                    #   data = bigquery.query "SELECT name " \
         
     | 
| 
       392 
     | 
    
         
            -
                    #                         "FROM  
     | 
| 
      
 390 
     | 
    
         
            +
                    #                         "FROM `my_proj.my_data.my_table`" \
         
     | 
| 
       393 
391 
     | 
    
         
             
                    #                         "WHERE id = ?",
         
     | 
| 
       394 
392 
     | 
    
         
             
                    #                         params: [1]
         
     | 
| 
       395 
393 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -403,7 +401,7 @@ module Google 
     | 
|
| 
       403 
401 
     | 
    
         
             
                    #   bigquery = Google::Cloud::Bigquery.new
         
     | 
| 
       404 
402 
     | 
    
         
             
                    #
         
     | 
| 
       405 
403 
     | 
    
         
             
                    #   data = bigquery.query "SELECT name " \
         
     | 
| 
       406 
     | 
    
         
            -
                    #                         "FROM  
     | 
| 
      
 404 
     | 
    
         
            +
                    #                         "FROM `my_proj.my_data.my_table`" \
         
     | 
| 
       407 
405 
     | 
    
         
             
                    #                         "WHERE id = @id",
         
     | 
| 
       408 
406 
     | 
    
         
             
                    #                         params: { id: 1 }
         
     | 
| 
       409 
407 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -412,8 +410,8 @@ module Google 
     | 
|
| 
       412 
410 
     | 
    
         
             
                    #   end
         
     | 
| 
       413 
411 
     | 
    
         
             
                    #
         
     | 
| 
       414 
412 
     | 
    
         
             
                    def query query, params: nil, max: nil, timeout: 10000, dryrun: nil,
         
     | 
| 
       415 
     | 
    
         
            -
                              cache: true, dataset: nil, project: nil,  
     | 
| 
       416 
     | 
    
         
            -
                               
     | 
| 
      
 413 
     | 
    
         
            +
                              cache: true, dataset: nil, project: nil, standard_sql: nil,
         
     | 
| 
      
 414 
     | 
    
         
            +
                              legacy_sql: nil
         
     | 
| 
       417 
415 
     | 
    
         
             
                      ensure_service!
         
     | 
| 
       418 
416 
     | 
    
         
             
                      options = { max: max, timeout: timeout, dryrun: dryrun, cache: cache,
         
     | 
| 
       419 
417 
     | 
    
         
             
                                  dataset: dataset, project: project,
         
     | 
| 
         @@ -710,7 +708,7 @@ module Google 
     | 
|
| 
       710 
708 
     | 
    
         
             
                    #
         
     | 
| 
       711 
709 
     | 
    
         
             
                    #   fourpm = bigquery.time 16, 0, 0
         
     | 
| 
       712 
710 
     | 
    
         
             
                    #   data = bigquery.query "SELECT name " \
         
     | 
| 
       713 
     | 
    
         
            -
                    #                         "FROM  
     | 
| 
      
 711 
     | 
    
         
            +
                    #                         "FROM `my_proj.my_data.my_table`" \
         
     | 
| 
       714 
712 
     | 
    
         
             
                    #                         "WHERE time_of_date = @time",
         
     | 
| 
       715 
713 
     | 
    
         
             
                    #                         params: { time: fourpm }
         
     | 
| 
       716 
714 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -725,7 +723,7 @@ module Google 
     | 
|
| 
       725 
723 
     | 
    
         
             
                    #
         
     | 
| 
       726 
724 
     | 
    
         
             
                    #   precise_time = bigquery.time 16, 35, 15.376541
         
     | 
| 
       727 
725 
     | 
    
         
             
                    #   data = bigquery.query "SELECT name " \
         
     | 
| 
       728 
     | 
    
         
            -
                    #                         "FROM  
     | 
| 
      
 726 
     | 
    
         
            +
                    #                         "FROM `my_proj.my_data.my_table`" \
         
     | 
| 
       729 
727 
     | 
    
         
             
                    #                         "WHERE time_of_date >= @time",
         
     | 
| 
       730 
728 
     | 
    
         
             
                    #                         params: { time: precise_time }
         
     | 
| 
       731 
729 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -55,22 +55,24 @@ module Google 
     | 
|
| 
       55 
55 
     | 
    
         
             
                    ##
         
     | 
| 
       56 
56 
     | 
    
         
             
                    # The schema of the data.
         
     | 
| 
       57 
57 
     | 
    
         
             
                    def schema
         
     | 
| 
       58 
     | 
    
         
            -
                       
     | 
| 
      
 58 
     | 
    
         
            +
                      @schema ||= begin
         
     | 
| 
      
 59 
     | 
    
         
            +
                        s = Schema.from_gapi(@gapi.schema)
         
     | 
| 
      
 60 
     | 
    
         
            +
                        # call fields so they will be available
         
     | 
| 
      
 61 
     | 
    
         
            +
                        s.fields
         
     | 
| 
      
 62 
     | 
    
         
            +
                        s.freeze
         
     | 
| 
      
 63 
     | 
    
         
            +
                      end
         
     | 
| 
       59 
64 
     | 
    
         
             
                    end
         
     | 
| 
       60 
65 
     | 
    
         | 
| 
       61 
66 
     | 
    
         
             
                    ##
         
     | 
| 
       62 
67 
     | 
    
         
             
                    # The fields of the data.
         
     | 
| 
       63 
68 
     | 
    
         
             
                    def fields
         
     | 
| 
       64 
     | 
    
         
            -
                       
     | 
| 
       65 
     | 
    
         
            -
                      f = f.to_hash if f.respond_to? :to_hash
         
     | 
| 
       66 
     | 
    
         
            -
                      f = [] if f.nil?
         
     | 
| 
       67 
     | 
    
         
            -
                      f
         
     | 
| 
      
 69 
     | 
    
         
            +
                      schema.fields
         
     | 
| 
       68 
70 
     | 
    
         
             
                    end
         
     | 
| 
       69 
71 
     | 
    
         | 
| 
       70 
72 
     | 
    
         
             
                    ##
         
     | 
| 
       71 
73 
     | 
    
         
             
                    # The name of the columns in the data.
         
     | 
| 
       72 
74 
     | 
    
         
             
                    def headers
         
     | 
| 
       73 
     | 
    
         
            -
                       
     | 
| 
      
 75 
     | 
    
         
            +
                      schema.headers
         
     | 
| 
       74 
76 
     | 
    
         
             
                    end
         
     | 
| 
       75 
77 
     | 
    
         | 
| 
       76 
78 
     | 
    
         
             
                    ##
         
     | 
| 
         @@ -202,8 +204,7 @@ module Google 
     | 
|
| 
       202 
204 
     | 
    
         
             
                      if gapi.schema.nil?
         
     | 
| 
       203 
205 
     | 
    
         
             
                        formatted_rows = []
         
     | 
| 
       204 
206 
     | 
    
         
             
                      else
         
     | 
| 
       205 
     | 
    
         
            -
                        formatted_rows = format_rows gapi.rows,
         
     | 
| 
       206 
     | 
    
         
            -
                                                     gapi.schema.fields
         
     | 
| 
      
 207 
     | 
    
         
            +
                        formatted_rows = Convert.format_rows gapi.rows, gapi.schema.fields
         
     | 
| 
       207 
208 
     | 
    
         
             
                      end
         
     | 
| 
       208 
209 
     | 
    
         | 
| 
       209 
210 
     | 
    
         
             
                      data = new formatted_rows
         
     |