This repository was archived by the owner on Jun 12, 2019. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ Only service accounts are supported right now. https://developers.google.com/acc
1414
1515* query
1616* tables
17+ * datasets
1718* load
1819* tables_formatted
1920* job
@@ -76,6 +77,24 @@ Describe table schema
7677
7778 bq.describe_table('table_name')
7879
80+ ## Datasets
81+
82+ List datasets in dataset
83+
84+ bq.datasets
85+
86+ List dataset names
87+
88+ bq.datasets_formatted
89+
90+ Delete exiting dataset
91+
92+ bq.delete_dataset('test123')
93+
94+ Create dataset. First param is the dataset name
95+
96+ bq.create_dataset('test123')
97+
7998## Querying
8099
81100 bq.query("SELECT * FROM [#{config['dataset']}.table_name] LIMIT 1")
Original file line number Diff line number Diff line change 22require 'big_query/client/query'
33require 'big_query/client/jobs'
44require 'big_query/client/tables'
5+ require 'big_query/client/datasets'
56require 'big_query/client/load'
67
78module BigQuery
@@ -10,6 +11,7 @@ class Client
1011 include BigQuery ::Client ::Query
1112 include BigQuery ::Client ::Jobs
1213 include BigQuery ::Client ::Tables
14+ include BigQuery ::Client ::Datasets
1315 include BigQuery ::Client ::Insert
1416
1517 attr_accessor :dataset , :project_id
Original file line number Diff line number Diff line change 1+ module BigQuery
2+ class Client
3+ module Datasets
4+
5+ # Lists the datasets
6+ #
7+ # @return [Hash] json api response
8+ def datasets
9+ response = api ( {
10+ :api_method => @bq . datasets . list ,
11+ } )
12+
13+ response [ 'datasets' ] || [ ]
14+ end
15+
16+ # Lists the datasets returnning only the tableId
17+ #
18+ # @return [Hash] json api response
19+ def datasets_formatted
20+ datasets . map { |t | t [ 'datasetReference' ] [ 'datasetId' ] }
21+ end
22+
23+ # Creating a new dataset
24+ #
25+ # @param datasetId [String] dataset id to insert into
26+ # @return [Hash] json api response
27+ #
28+ # examples:
29+ #
30+ # @bq.create_dataset('new_dataset')
31+ def create_dataset ( datasetId )
32+ api (
33+ api_method : @bq . datasets . insert ,
34+ body_object : { "datasetReference" => {
35+ "datasetId" => datasetId ,
36+ "projectId" => @project_id ,
37+ }
38+ }
39+ )
40+ end
41+
42+ # Deletes the given datasetId
43+ #
44+ # @param datasetId [String] dataset id to insert into
45+ def delete_dataset ( datasetId )
46+ api ( api_method : @bq . datasets . delete ,
47+ parameters : { 'datasetId' => datasetId }
48+ )
49+ end
50+ end
51+ end
52+ end
Original file line number Diff line number Diff line change @@ -206,4 +206,40 @@ def test_for_insert_job
206206
207207 assert_equal result [ 'kind' ] , "bigquery#job"
208208 end
209+
210+ def test_for_datasets
211+ dataset = @bq . datasets . select { |t | t [ 'id' ] == "#{ config [ 'project_id' ] } :#{ config [ 'dataset' ] } " } . first
212+
213+ assert_equal dataset [ 'kind' ] , "bigquery#dataset"
214+ assert_equal dataset [ 'datasetReference' ] [ 'datasetId' ] , config [ 'dataset' ]
215+ end
216+
217+ def test_for_datasets_formatted
218+ result = @bq . datasets_formatted
219+
220+ assert_includes result , config [ 'dataset' ]
221+ end
222+
223+ def test_for_create_datasets
224+ if @bq . datasets_formatted . include? 'test123'
225+ @bq . delete_dataset ( 'test123' )
226+ end
227+
228+ result = @bq . create_dataset ( 'test123' )
229+
230+ assert_equal result [ 'kind' ] , "bigquery#dataset"
231+ assert_equal result [ 'datasetReference' ] [ 'datasetId' ] , 'test123'
232+ end
233+
234+ def test_for_delete_datasets
235+ if !@bq . datasets_formatted . include? 'test123'
236+ @bq . create_dataset ( 'test123' )
237+ end
238+
239+ result = @bq . delete_dataset ( 'test123' )
240+
241+ datasets = @bq . datasets_formatted
242+
243+ refute_includes datasets , 'test123'
244+ end
209245end
You can’t perform that action at this time.
0 commit comments