google-cloud-bigquery 1.35.0 → 1.38.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 403979ca0fcee3fa41911b46cd53f9f5c4f030f85610c29870fc770f41de7d03
4
- data.tar.gz: 15060d2d7351dc8e922adf77483c48ee4be7acf98bffdcb824f699920db65d7c
3
+ metadata.gz: 134aa6aa80aff038d9ef64cb47875c8147051f47d7259dcc61199fb28f7d4e4e
4
+ data.tar.gz: '023664494e99ff2e580a10ebda7ef369b7fbe6290b9e448ee3eef697ecf94b8a'
5
5
  SHA512:
6
- metadata.gz: 6bdcdd87c1fb4dcafdb8a071fe21322fc45c3ac94a3a89617d2a576f15733e371833ee47027056081af955e7366a817aaab3eead234d1ed2098678e6ca5e225e
7
- data.tar.gz: c46e7b144f15072b10fe16bff3ccffdc54f43801a59f6760666c3cc2c2d8b8230262163de8dadb0f705271d7b27700abe1703f39fd26cd9b97d3fdd442379e61
6
+ metadata.gz: 7563dc9d4e0474c9b2c0bd3f06bef6c059568e24051221542c2536f4b8a0576310d8721eaa5338815ee6fbc5c71b1a782bde9b892c5eabbe532ec30309731e5f
7
+ data.tar.gz: fd6f178cd53ad95f8eb5310854909c726d796beb74232f7537212f949e1358423531f80f8bbfc3e7b8f1afa5b90b1ab5f83549dd1fa9d7a8fc1c9f5653a6712e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Release History
2
2
 
3
+ ### 1.38.0 / 2021-11-16
4
+
5
+ #### Features
6
+
7
+ * Add session support
8
+ * Add create_session and session_id params to Project#query_job
9
+ * Add create_session and session_id params to Dataset#query_job
10
+ * Add session_id param to Project#query
11
+ * Add session_id param to Dataset#query
12
+ * Add Job#session_id
13
+ * Add QueryJob::Updater#create_session=
14
+ * Add QueryJob::Updater#session_id=
15
+
16
+ ### 1.37.0 / 2021-10-21
17
+
18
+ #### Features
19
+
20
+ * Add support for Avro options to external data sources
21
+ * Add External::AvroSource
22
+
23
+ ### 1.36.0 / 2021-09-22
24
+
25
+ #### Features
26
+
27
+ * Add Job#delete
28
+
29
+ #### Bug Fixes
30
+
31
+ * Add precision and scale to Field#add_field
32
+
33
+ ### 1.35.1 / 2021-09-14
34
+
35
+ #### Documentation
36
+
37
+ * Wrap character class regex in backticks
38
+
3
39
  ### 1.35.0 / 2021-08-12
4
40
 
5
41
  #### Features
@@ -69,8 +69,8 @@ module Google
69
69
  ##
70
70
  # A unique ID for this dataset, without the project name.
71
71
  #
72
- # @return [String] The ID must contain only letters (a-z, A-Z), numbers
73
- # (0-9), or underscores (_). The maximum length is 1,024 characters.
72
+ # @return [String] The ID must contain only letters (`[A-Za-z]`), numbers
73
+ # (`[0-9]`), or underscores (`_`). The maximum length is 1,024 characters.
74
74
  #
75
75
  # @!group Attributes
76
76
  #
@@ -501,7 +501,7 @@ module Google
501
501
  # you can pass the table's schema as a hash (see example.)
502
502
  #
503
503
  # @param [String] table_id The ID of the table. The ID must contain only
504
- # letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum
504
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The maximum
505
505
  # length is 1,024 characters.
506
506
  # @param [String] name A descriptive name for the table.
507
507
  # @param [String] description A user-friendly description of the table.
@@ -630,7 +630,7 @@ module Google
630
630
  # @see https://cloud.google.com/bigquery/docs/views Creating views
631
631
  #
632
632
  # @param [String] table_id The ID of the view table. The ID must contain
633
- # only letters (a-z, A-Z), numbers (0-9), or underscores (_). The
633
+ # only letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The
634
634
  # maximum length is 1,024 characters.
635
635
  # @param [String] query The query that BigQuery executes when the view
636
636
  # is referenced.
@@ -726,8 +726,8 @@ module Google
726
726
  #
727
727
  # @see https://cloud.google.com/bigquery/docs/materialized-views-intro Introduction to materialized views
728
728
  #
729
- # @param [String] table_id The ID of the materialized view table. The ID must contain only letters (a-z, A-Z),
730
- # numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
729
+ # @param [String] table_id The ID of the materialized view table. The ID must contain only letters (`[A-Za-z]`),
730
+ # numbers (`[0-9]`), or underscores (`_`). The maximum length is 1,024 characters.
731
731
  # @param [String] query The query that BigQuery executes when the materialized view is referenced.
732
732
  # @param [String] name A descriptive name for the table.
733
733
  # @param [String] description A user-friendly description of the table.
@@ -954,7 +954,7 @@ module Google
954
954
  # {Routine::Updater#description=}.
955
955
  #
956
956
  # @param [String] routine_id The ID of the routine. The ID must contain only
957
- # letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length
957
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The maximum length
958
958
  # is 256 characters.
959
959
  # @yield [routine] A block for setting properties on the routine.
960
960
  # @yieldparam [Google::Cloud::Bigquery::Routine::Updater] routine An updater to set additional properties on the
@@ -1244,13 +1244,19 @@ module Google
1244
1244
  # Flattens all nested and repeated fields in the query results. The
1245
1245
  # default value is `true`. `large_results` parameter must be `true` if
1246
1246
  # this is set to `false`.
1247
+ # @param [Integer] maximum_billing_tier Limits the billing tier for this
1248
+ # job. Queries that have resource usage beyond this tier will fail
1249
+ # (without incurring a charge). WARNING: The billed byte amount can be
1250
+ # multiplied by an amount up to this number! Most users should not need
1251
+ # to alter this setting, and we recommend that you avoid introducing new
1252
+ # uses of it. Deprecated.
1247
1253
  # @param [Integer] maximum_bytes_billed Limits the bytes billed for this
1248
1254
  # job. Queries that will have bytes billed beyond this limit will fail
1249
1255
  # (without incurring a charge). Optional. If unspecified, this will be
1250
1256
  # set to your project default.
1251
1257
  # @param [String] job_id A user-defined ID for the query job. The ID
1252
- # must contain only letters (a-z, A-Z), numbers (0-9), underscores
1253
- # (_), or dashes (-). The maximum length is 1,024 characters. If
1258
+ # must contain only letters (`[A-Za-z]`), numbers (`[0-9]`), underscores
1259
+ # (`_`), or dashes (`-`). The maximum length is 1,024 characters. If
1254
1260
  # `job_id` is provided, then `prefix` will not be used.
1255
1261
  #
1256
1262
  # See [Generating a job
@@ -1259,8 +1265,8 @@ module Google
1259
1265
  # prepended to a generated value to produce a unique job ID. For
1260
1266
  # example, the prefix `daily_import_job_` can be given to generate a
1261
1267
  # job ID such as `daily_import_job_12vEDtMQ0mbp1Mo5Z7mzAFQJZazh`. The
1262
- # prefix must contain only letters (a-z, A-Z), numbers (0-9),
1263
- # underscores (_), or dashes (-). The maximum length of the entire ID
1268
+ # prefix must contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
1269
+ # underscores (`_`), or dashes (`-`). The maximum length of the entire ID
1264
1270
  # is 1,024 characters. If `job_id` is provided, then `prefix` will not
1265
1271
  # be used.
1266
1272
  # @param [Hash] labels A hash of user-provided labels associated with
@@ -1294,8 +1300,13 @@ module Google
1294
1300
  # For additional information on migrating, see: [Migrating to
1295
1301
  # standard SQL - Differences in user-defined JavaScript
1296
1302
  # functions](https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_user-defined_javascript_functions)
1297
- # @param [Integer] maximum_billing_tier Deprecated: Change the billing
1298
- # tier to allow high-compute queries.
1303
+ # @param [Boolean] create_session If true, creates a new session, where the
1304
+ # session ID will be a server generated random id. If false, runs query
1305
+ # with an existing session ID when one is provided in the `session_id`
1306
+ # param, otherwise runs query in non-session mode. See {Job#session_id}.
1307
+ # The default value is false.
1308
+ # @param [String] session_id The ID of an existing session. See also the
1309
+ # `create_session` param and {Job#session_id}.
1299
1310
  # @yield [job] a job configuration object
1300
1311
  # @yieldparam [Google::Cloud::Bigquery::QueryJob::Updater] job a job
1301
1312
  # configuration object for setting additional options for the query.
@@ -1371,8 +1382,7 @@ module Google
1371
1382
  # bigquery = Google::Cloud::Bigquery.new
1372
1383
  # dataset = bigquery.dataset "my_dataset"
1373
1384
  #
1374
- # job = dataset.query_job "SELECT name FROM my_table " \
1375
- # "WHERE id IN UNNEST(@ids)",
1385
+ # job = dataset.query_job "SELECT name FROM my_table WHERE id IN UNNEST(@ids)",
1376
1386
  # params: { ids: [] },
1377
1387
  # types: { ids: [:INT64] }
1378
1388
  #
@@ -1387,8 +1397,9 @@ module Google
1387
1397
  # require "google/cloud/bigquery"
1388
1398
  #
1389
1399
  # bigquery = Google::Cloud::Bigquery.new
1400
+ # dataset = bigquery.dataset "my_dataset"
1390
1401
  #
1391
- # job = bigquery.query_job "CREATE TABLE my_table (x INT64)"
1402
+ # job = dataset.query_job "CREATE TABLE my_table (x INT64)"
1392
1403
  #
1393
1404
  # job.wait_until_done!
1394
1405
  # if !job.failed?
@@ -1399,16 +1410,28 @@ module Google
1399
1410
  # require "google/cloud/bigquery"
1400
1411
  #
1401
1412
  # bigquery = Google::Cloud::Bigquery.new
1413
+ # dataset = bigquery.dataset "my_dataset"
1402
1414
  #
1403
- # job = bigquery.query_job "UPDATE my_table " \
1404
- # "SET x = x + 1 " \
1405
- # "WHERE x IS NOT NULL"
1415
+ # job = dataset.query_job "UPDATE my_table SET x = x + 1 WHERE x IS NOT NULL"
1406
1416
  #
1407
1417
  # job.wait_until_done!
1408
1418
  # if !job.failed?
1409
1419
  # puts job.num_dml_affected_rows
1410
1420
  # end
1411
1421
  #
1422
+ # @example Run query in a session:
1423
+ # require "google/cloud/bigquery"
1424
+ #
1425
+ # bigquery = Google::Cloud::Bigquery.new
1426
+ # dataset = bigquery.dataset "my_dataset"
1427
+ #
1428
+ # job = dataset.query_job "CREATE TEMPORARY TABLE temptable AS SELECT 17 as foo", create_session: true
1429
+ #
1430
+ # job.wait_until_done!
1431
+ #
1432
+ # session_id = job.session_id
1433
+ # data = dataset.query "SELECT * FROM temptable", session_id: session_id
1434
+ #
1412
1435
  # @example Query using external data source, set destination:
1413
1436
  # require "google/cloud/bigquery"
1414
1437
  #
@@ -1435,16 +1458,52 @@ module Google
1435
1458
  #
1436
1459
  # @!group Data
1437
1460
  #
1438
- def query_job query, params: nil, types: nil, external: nil, priority: "INTERACTIVE", cache: true, table: nil,
1439
- create: nil, write: nil, dryrun: nil, standard_sql: nil, legacy_sql: nil, large_results: nil,
1440
- flatten: nil, maximum_billing_tier: nil, maximum_bytes_billed: nil, job_id: nil, prefix: nil,
1441
- labels: nil, udfs: nil
1461
+ def query_job query,
1462
+ params: nil,
1463
+ types: nil,
1464
+ external: nil,
1465
+ priority: "INTERACTIVE",
1466
+ cache: true,
1467
+ table: nil,
1468
+ create: nil,
1469
+ write: nil,
1470
+ dryrun: nil,
1471
+ standard_sql: nil,
1472
+ legacy_sql: nil,
1473
+ large_results: nil,
1474
+ flatten: nil,
1475
+ maximum_billing_tier: nil,
1476
+ maximum_bytes_billed: nil,
1477
+ job_id: nil,
1478
+ prefix: nil,
1479
+ labels: nil,
1480
+ udfs: nil,
1481
+ create_session: nil,
1482
+ session_id: nil
1442
1483
  ensure_service!
1443
- options = { params: params, types: types, external: external, priority: priority, cache: cache, table: table,
1444
- create: create, write: write, dryrun: dryrun, standard_sql: standard_sql, legacy_sql: legacy_sql,
1445
- large_results: large_results, flatten: flatten, maximum_billing_tier: maximum_billing_tier,
1446
- maximum_bytes_billed: maximum_bytes_billed, job_id: job_id, prefix: prefix, labels: labels,
1447
- udfs: udfs }
1484
+ options = {
1485
+ params: params,
1486
+ types: types,
1487
+ external: external,
1488
+ priority: priority,
1489
+ cache: cache,
1490
+ table: table,
1491
+ create: create,
1492
+ write: write,
1493
+ dryrun: dryrun,
1494
+ standard_sql: standard_sql,
1495
+ legacy_sql: legacy_sql,
1496
+ large_results: large_results,
1497
+ flatten: flatten,
1498
+ maximum_billing_tier: maximum_billing_tier,
1499
+ maximum_bytes_billed: maximum_bytes_billed,
1500
+ job_id: job_id,
1501
+ prefix: prefix,
1502
+ labels: labels,
1503
+ udfs: udfs,
1504
+ create_session: create_session,
1505
+ session_id: session_id
1506
+ }
1448
1507
 
1449
1508
  updater = QueryJob::Updater.from_options service, query, options
1450
1509
  updater.dataset = self
@@ -1566,6 +1625,8 @@ module Google
1566
1625
  # When set to false, the values of `large_results` and `flatten` are
1567
1626
  # ignored; the query will be run as if `large_results` is true and
1568
1627
  # `flatten` is false. Optional. The default value is false.
1628
+ # @param [String] session_id The ID of an existing session. See the
1629
+ # `create_session` param in {#query_job} and {Job#session_id}.
1569
1630
  # @yield [job] a job configuration object
1570
1631
  # @yieldparam [Google::Cloud::Bigquery::QueryJob::Updater] job a job
1571
1632
  # configuration object for setting additional options for the query.
@@ -1641,8 +1702,7 @@ module Google
1641
1702
  # bigquery = Google::Cloud::Bigquery.new
1642
1703
  # dataset = bigquery.dataset "my_dataset"
1643
1704
  #
1644
- # data = dataset.query "SELECT name FROM my_table " \
1645
- # "WHERE id IN UNNEST(@ids)",
1705
+ # data = dataset.query "SELECT name FROM my_table WHERE id IN UNNEST(@ids)",
1646
1706
  # params: { ids: [] },
1647
1707
  # types: { ids: [:INT64] }
1648
1708
  #
@@ -1657,8 +1717,9 @@ module Google
1657
1717
  # require "google/cloud/bigquery"
1658
1718
  #
1659
1719
  # bigquery = Google::Cloud::Bigquery.new
1720
+ # dataset = bigquery.dataset "my_dataset"
1660
1721
  #
1661
- # data = bigquery.query "CREATE TABLE my_table (x INT64)"
1722
+ # data = dataset.query "CREATE TABLE my_table (x INT64)"
1662
1723
  #
1663
1724
  # table_ref = data.ddl_target_table # Or ddl_target_routine for CREATE/DROP FUNCTION/PROCEDURE
1664
1725
  #
@@ -1666,13 +1727,25 @@ module Google
1666
1727
  # require "google/cloud/bigquery"
1667
1728
  #
1668
1729
  # bigquery = Google::Cloud::Bigquery.new
1730
+ # dataset = bigquery.dataset "my_dataset"
1669
1731
  #
1670
- # data = bigquery.query "UPDATE my_table " \
1671
- # "SET x = x + 1 " \
1672
- # "WHERE x IS NOT NULL"
1732
+ # data = dataset.query "UPDATE my_table SET x = x + 1 WHERE x IS NOT NULL"
1673
1733
  #
1674
1734
  # puts data.num_dml_affected_rows
1675
1735
  #
1736
+ # @example Run query in a session:
1737
+ # require "google/cloud/bigquery"
1738
+ #
1739
+ # bigquery = Google::Cloud::Bigquery.new
1740
+ # dataset = bigquery.dataset "my_dataset"
1741
+ #
1742
+ # job = dataset.query_job "CREATE TEMPORARY TABLE temptable AS SELECT 17 as foo", create_session: true
1743
+ #
1744
+ # job.wait_until_done!
1745
+ #
1746
+ # session_id = job.session_id
1747
+ # data = dataset.query "SELECT * FROM temptable", session_id: session_id
1748
+ #
1676
1749
  # @example Query using external data source, set destination:
1677
1750
  # require "google/cloud/bigquery"
1678
1751
  #
@@ -1699,10 +1772,25 @@ module Google
1699
1772
  #
1700
1773
  # @!group Data
1701
1774
  #
1702
- def query query, params: nil, types: nil, external: nil, max: nil, cache: true,
1703
- standard_sql: nil, legacy_sql: nil, &block
1704
- job = query_job query, params: params, types: types, external: external, cache: cache,
1705
- standard_sql: standard_sql, legacy_sql: legacy_sql, &block
1775
+ def query query,
1776
+ params: nil,
1777
+ types: nil,
1778
+ external: nil,
1779
+ max: nil,
1780
+ cache: true,
1781
+ standard_sql: nil,
1782
+ legacy_sql: nil,
1783
+ session_id: nil,
1784
+ &block
1785
+ job = query_job query,
1786
+ params: params,
1787
+ types: types,
1788
+ external: external,
1789
+ cache: cache,
1790
+ standard_sql: standard_sql,
1791
+ legacy_sql: legacy_sql,
1792
+ session_id: session_id,
1793
+ &block
1706
1794
  job.wait_until_done!
1707
1795
  ensure_job_succeeded! job
1708
1796
 
@@ -1883,8 +1971,8 @@ module Google
1883
1971
  # this option. Also note that for most use cases, the block yielded by
1884
1972
  # this method is a more convenient way to configure the schema.
1885
1973
  # @param [String] job_id A user-defined ID for the load job. The ID
1886
- # must contain only letters (a-z, A-Z), numbers (0-9), underscores
1887
- # (_), or dashes (-). The maximum length is 1,024 characters. If
1974
+ # must contain only letters (`[A-Za-z]`), numbers (`[0-9]`), underscores
1975
+ # (`_`), or dashes (`-`). The maximum length is 1,024 characters. If
1888
1976
  # `job_id` is provided, then `prefix` will not be used.
1889
1977
  #
1890
1978
  # See [Generating a job
@@ -1893,8 +1981,8 @@ module Google
1893
1981
  # prepended to a generated value to produce a unique job ID. For
1894
1982
  # example, the prefix `daily_import_job_` can be given to generate a
1895
1983
  # job ID such as `daily_import_job_12vEDtMQ0mbp1Mo5Z7mzAFQJZazh`. The
1896
- # prefix must contain only letters (a-z, A-Z), numbers (0-9),
1897
- # underscores (_), or dashes (-). The maximum length of the entire ID
1984
+ # prefix must contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
1985
+ # underscores (`_`), or dashes (`-`). The maximum length of the entire ID
1898
1986
  # is 1,024 characters. If `job_id` is provided, then `prefix` will not
1899
1987
  # be used.
1900
1988
  # @param [Hash] labels A hash of user-provided labels associated with
@@ -0,0 +1,107 @@
1
+ # Copyright 2021 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ require "google/apis/bigquery_v2"
17
+
18
+ module Google
19
+ module Cloud
20
+ module Bigquery
21
+ module External
22
+ ##
23
+ # # AvroSource
24
+ #
25
+ # {External::AvroSource} is a subclass of {External::DataSource} and
26
+ # represents a Avro external data source that can be queried
27
+ # from directly, even though the data is not stored in BigQuery. Instead
28
+ # of loading or streaming the data, this object references the external
29
+ # data source.
30
+ #
31
+ # @example
32
+ # require "google/cloud/bigquery"
33
+ #
34
+ # bigquery = Google::Cloud::Bigquery.new
35
+ #
36
+ # avro_url = "gs://bucket/path/to/*.avro"
37
+ # avro_table = bigquery.external avro_url do |avro|
38
+ # avro.use_avro_logical_types = 1
39
+ # end
40
+ #
41
+ # data = bigquery.query "SELECT * FROM my_ext_table",
42
+ # external: { my_ext_table: avro_table }
43
+ #
44
+ # # Iterate over the first page of results
45
+ # data.each do |row|
46
+ # puts row[:name]
47
+ # end
48
+ # # Retrieve the next page of results
49
+ # data = data.next if data.next?
50
+ #
51
+ class AvroSource < External::DataSource
52
+ ##
53
+ # @private Create an empty AvroSource object.
54
+ def initialize
55
+ super
56
+ @gapi.avro_options = Google::Apis::BigqueryV2::AvroOptions.new
57
+ end
58
+
59
+ ##
60
+ # Indicates whether to interpret logical types as the corresponding BigQuery data type (for example,
61
+ # `TIMESTAMP`), instead of using the raw type (for example, `INTEGER`).
62
+ #
63
+ # @return [Boolean]
64
+ #
65
+ # @example
66
+ # require "google/cloud/bigquery"
67
+ #
68
+ # bigquery = Google::Cloud::Bigquery.new
69
+ #
70
+ # avro_url = "gs://bucket/path/to/*.avro"
71
+ # avro_table = bigquery.external avro_url do |avro|
72
+ # avro.use_avro_logical_types = true
73
+ # end
74
+ #
75
+ # avro_table.use_avro_logical_types #=> true
76
+ #
77
+ def use_avro_logical_types
78
+ @gapi.avro_options.use_avro_logical_types
79
+ end
80
+
81
+ ##
82
+ # Sets whether to interpret logical types as the corresponding BigQuery data type (for example, `TIMESTAMP`),
83
+ # instead of using the raw type (for example, `INTEGER`).
84
+ #
85
+ # @param [Boolean] new_use_avro_logical_types The new `use_avro_logical_types` value.
86
+ #
87
+ # @example
88
+ # require "google/cloud/bigquery"
89
+ #
90
+ # bigquery = Google::Cloud::Bigquery.new
91
+ #
92
+ # avro_url = "gs://bucket/path/to/*.avro"
93
+ # avro_table = bigquery.external avro_url do |avro|
94
+ # avro.use_avro_logical_types = true
95
+ # end
96
+ #
97
+ # avro_table.use_avro_logical_types #=> true
98
+ #
99
+ def use_avro_logical_types= new_use_avro_logical_types
100
+ frozen_check!
101
+ @gapi.avro_options.use_avro_logical_types = new_use_avro_logical_types
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -37,7 +37,7 @@ module Google
37
37
  #
38
38
  # bigquery = Google::Cloud::Bigquery.new
39
39
  #
40
- # avro_url = "gs://bucket/path/to/data.avro"
40
+ # avro_url = "gs://bucket/path/to/*.avro"
41
41
  # avro_table = bigquery.external avro_url do |avro|
42
42
  # avro.autodetect = true
43
43
  # end
@@ -174,7 +174,7 @@ module Google
174
174
  #
175
175
  # bigquery = Google::Cloud::Bigquery.new
176
176
  #
177
- # avro_url = "gs://bucket/path/to/data.avro"
177
+ # avro_url = "gs://bucket/path/to/*.avro"
178
178
  # avro_table = bigquery.external avro_url
179
179
  #
180
180
  # avro_table.format #=> "AVRO"
@@ -14,6 +14,7 @@
14
14
 
15
15
 
16
16
  require "google/cloud/bigquery/external/data_source"
17
+ require "google/cloud/bigquery/external/avro_source"
17
18
  require "google/cloud/bigquery/external/bigtable_source"
18
19
  require "google/cloud/bigquery/external/csv_source"
19
20
  require "google/cloud/bigquery/external/json_source"
@@ -101,28 +102,28 @@ module Google
101
102
  # @private Determine source_format from inputs
102
103
  def self.source_format_for urls, format
103
104
  val = {
104
- "csv" => "CSV",
105
105
  "avro" => "AVRO",
106
- "json" => "NEWLINE_DELIMITED_JSON",
107
- "newline_delimited_json" => "NEWLINE_DELIMITED_JSON",
108
- "sheets" => "GOOGLE_SHEETS",
109
- "google_sheets" => "GOOGLE_SHEETS",
110
- "datastore" => "DATASTORE_BACKUP",
106
+ "bigtable" => "BIGTABLE",
107
+ "csv" => "CSV",
111
108
  "backup" => "DATASTORE_BACKUP",
109
+ "datastore" => "DATASTORE_BACKUP",
112
110
  "datastore_backup" => "DATASTORE_BACKUP",
113
- "bigtable" => "BIGTABLE",
111
+ "sheets" => "GOOGLE_SHEETS",
112
+ "google_sheets" => "GOOGLE_SHEETS",
113
+ "json" => "NEWLINE_DELIMITED_JSON",
114
+ "newline_delimited_json" => "NEWLINE_DELIMITED_JSON",
114
115
  "orc" => "ORC",
115
116
  "parquet" => "PARQUET"
116
117
  }[format.to_s.downcase]
117
118
  return val unless val.nil?
118
119
  Array(urls).each do |url|
119
- return "CSV" if url.end_with? ".csv"
120
- return "NEWLINE_DELIMITED_JSON" if url.end_with? ".json"
121
- return "PARQUET" if url.end_with? ".parquet"
122
120
  return "AVRO" if url.end_with? ".avro"
121
+ return "BIGTABLE" if url.start_with? "https://googleapis.com/bigtable/projects/"
122
+ return "CSV" if url.end_with? ".csv"
123
123
  return "DATASTORE_BACKUP" if url.end_with? ".backup_info"
124
124
  return "GOOGLE_SHEETS" if url.start_with? "https://docs.google.com/spreadsheets/"
125
- return "BIGTABLE" if url.start_with? "https://googleapis.com/bigtable/projects/"
125
+ return "NEWLINE_DELIMITED_JSON" if url.end_with? ".json"
126
+ return "PARQUET" if url.end_with? ".parquet"
126
127
  end
127
128
  nil
128
129
  end
@@ -131,13 +132,14 @@ module Google
131
132
  # @private Determine table class from source_format
132
133
  def self.table_class_for format
133
134
  case format
135
+ when "AVRO" then External::AvroSource
136
+ when "BIGTABLE" then External::BigtableSource
134
137
  when "CSV" then External::CsvSource
138
+ when "GOOGLE_SHEETS" then External::SheetsSource
135
139
  when "NEWLINE_DELIMITED_JSON" then External::JsonSource
136
140
  when "PARQUET" then External::ParquetSource
137
- when "GOOGLE_SHEETS" then External::SheetsSource
138
- when "BIGTABLE" then External::BigtableSource
139
141
  else
140
- # AVRO, DATASTORE_BACKUP
142
+ # DATASTORE_BACKUP, ORC
141
143
  External::DataSource
142
144
  end
143
145
  end
@@ -74,8 +74,8 @@ module Google
74
74
  ##
75
75
  # The ID of the job.
76
76
  #
77
- # @return [String] The ID must contain only letters (a-z, A-Z), numbers
78
- # (0-9), underscores (_), or dashes (-). The maximum length is 1,024
77
+ # @return [String] The ID must contain only letters (`[A-Za-z]`), numbers
78
+ # (`[0-9]`), underscores (`_`), or dashes (`-`). The maximum length is 1,024
79
79
  # characters.
80
80
  #
81
81
  def job_id
@@ -226,6 +226,16 @@ module Google
226
226
  Array(@gapi.statistics.reservation_usage).map { |g| ReservationUsage.from_gapi g }
227
227
  end
228
228
 
229
+ ##
230
+ # The ID of the session if this job is part of one. See the `create_session` param in {Project#query_job} and
231
+ # {Dataset#query_job}.
232
+ #
233
+ # @return [String, nil] The session ID, or `nil` if not associated with a session.
234
+ #
235
+ def session_id
236
+ @gapi.statistics.session_info&.session_id
237
+ end
238
+
229
239
  ##
230
240
  # The ID of a multi-statement transaction.
231
241
  #
@@ -392,6 +402,28 @@ module Google
392
402
  true
393
403
  end
394
404
 
405
+ ##
406
+ # Requests that a job is deleted. This call will return when the job is deleted.
407
+ #
408
+ # @return [Boolean] Returns `true` if the job was deleted.
409
+ #
410
+ # @example
411
+ # require "google/cloud/bigquery"
412
+ #
413
+ # bigquery = Google::Cloud::Bigquery.new
414
+ #
415
+ # job = bigquery.job "my_job"
416
+ #
417
+ # job.delete
418
+ #
419
+ # @!group Lifecycle
420
+ #
421
+ def delete
422
+ ensure_service!
423
+ service.delete_job job_id, location: location
424
+ true
425
+ end
426
+
395
427
  ##
396
428
  # Created a new job with the current configuration.
397
429
  #