Class GoogleSheetsStoragePlugin
java.lang.Object
org.apache.drill.exec.store.AbstractStoragePlugin
org.apache.drill.exec.store.googlesheets.GoogleSheetsStoragePlugin
- All Implemented Interfaces:
AutoCloseable
,SchemaFactory
,StoragePlugin
-
Field Summary
Fields inherited from class org.apache.drill.exec.store.AbstractStoragePlugin
context
Fields inherited from interface org.apache.drill.exec.store.SchemaFactory
DEFAULT_WS_NAME
-
Constructor Summary
ConstructorDescriptionGoogleSheetsStoragePlugin
(GoogleSheetsStoragePluginConfig configuration, DrillbitContext context, String name) -
Method Summary
Modifier and TypeMethodDescriptionMethod returns a Jackson serializable object that extends a StoragePluginConfig.com.google.api.client.util.store.DataStore<com.google.api.client.auth.oauth2.StoredCredential>
getDataStore
(String username) com.google.api.services.drive.Drive
getDriveService
(String queryUser) This method gets (and caches) the Google Drive Service needed for mapping Google Sheet names to file tokens.Set<? extends org.apache.calcite.plan.RelOptRule>
getOptimizerRules
(OptimizerRulesContext optimizerContext, PlannerPhase phase) An implementation of this method will return one or more specialized rules that Drill query optimizer can leverage in physical space.getPhysicalScan
(String userName, JSONOptions selection) Get the physical scan operator for the particular GroupScan (read) node.getPhysicalScan
(String userName, JSONOptions selection, List<SchemaPath> columns) Get the physical scan operator for the particular GroupScan (read) node.getPhysicalScan
(String userName, JSONOptions selection, List<SchemaPath> columns, SessionOptionManager options, MetadataProviderManager metadataProviderManager) Get the physical scan operator for the particular GroupScan (read) node.getPhysicalScan
(String userName, JSONOptions selection, SessionOptionManager options) Get the physical scan operator for the particular GroupScan (read) node.getPhysicalScan
(String userName, JSONOptions selection, SessionOptionManager options, MetadataProviderManager metadataProviderManager) Get the physical scan operator for the particular GroupScan (read) node.com.google.api.services.sheets.v4.Sheets
getSheetsService
(String queryUser) This method gets (and caches) the Google Service needed for API calls.void
initializeOauthTokenTable
(SchemaConfig schemaConfig) void
This function is only used for testing and creates the necessary token tables.void
registerSchemas
(SchemaConfig schemaConfig, org.apache.calcite.schema.SchemaPlus parent) Register the schemas provided by this SchemaFactory implementation under the given parent schema.boolean
Indicates if Drill can insert to a table to this plugin.boolean
Indicates if Drill can write a table to this format (e.g.Methods inherited from class org.apache.drill.exec.store.AbstractStoragePlugin
close, getContext, getFormatPlugin, getName, getPhysicalScan, onDisabled, onEnabled, start, supportsRead, toString
-
Constructor Details
-
GoogleSheetsStoragePlugin
public GoogleSheetsStoragePlugin(GoogleSheetsStoragePluginConfig configuration, DrillbitContext context, String name)
-
-
Method Details
-
initializeOauthTokenTable
-
getDataStore
public com.google.api.client.util.store.DataStore<com.google.api.client.auth.oauth2.StoredCredential> getDataStore(String username) -
registerSchemas
Description copied from interface:SchemaFactory
Register the schemas provided by this SchemaFactory implementation under the given parent schema.- Parameters:
schemaConfig
- Configuration for schema objects.parent
- Reference to parent schema.
-
getTokenTable
-
getPhysicalScan
public AbstractGroupScan getPhysicalScan(String userName, JSONOptions selection, SessionOptionManager options) throws IOException Description copied from interface:StoragePlugin
Get the physical scan operator for the particular GroupScan (read) node.- Specified by:
getPhysicalScan
in interfaceStoragePlugin
- Overrides:
getPhysicalScan
in classAbstractStoragePlugin
- Parameters:
userName
- User whom to impersonate when reading the contents as part of Scan.selection
- The configured storage engine specific selection.options
- (optional) session options- Returns:
- The physical scan operator for the particular GroupScan (read) node.
- Throws:
IOException
-
getPhysicalScan
public AbstractGroupScan getPhysicalScan(String userName, JSONOptions selection, SessionOptionManager options, MetadataProviderManager metadataProviderManager) throws IOException Description copied from interface:StoragePlugin
Get the physical scan operator for the particular GroupScan (read) node.- Specified by:
getPhysicalScan
in interfaceStoragePlugin
- Overrides:
getPhysicalScan
in classAbstractStoragePlugin
- Parameters:
userName
- User whom to impersonate when reading the contents as part of Scan.selection
- The configured storage engine specific selection.options
- (optional) session optionsmetadataProviderManager
- manager for handling metadata providers- Returns:
- The physical scan operator for the particular GroupScan (read) node.
- Throws:
IOException
-
getPhysicalScan
public AbstractGroupScan getPhysicalScan(String userName, JSONOptions selection, List<SchemaPath> columns) throws IOException Description copied from interface:StoragePlugin
Get the physical scan operator for the particular GroupScan (read) node.- Specified by:
getPhysicalScan
in interfaceStoragePlugin
- Overrides:
getPhysicalScan
in classAbstractStoragePlugin
- Parameters:
userName
- User whom to impersonate when reading the contents as part of Scan.selection
- The configured storage engine specific selection.columns
- (optional) The list of column names to scan from the data source.- Returns:
- The physical scan operator for the particular GroupScan (read) node.
- Throws:
IOException
-
getPhysicalScan
Description copied from interface:StoragePlugin
Get the physical scan operator for the particular GroupScan (read) node.- Specified by:
getPhysicalScan
in interfaceStoragePlugin
- Overrides:
getPhysicalScan
in classAbstractStoragePlugin
- Parameters:
userName
- User whom to impersonate when when reading the contents as part of Scan.selection
- The configured storage engine specific selection.- Returns:
- The physical scan operator for the particular GroupScan (read) node.
- Throws:
IOException
-
getPhysicalScan
public AbstractGroupScan getPhysicalScan(String userName, JSONOptions selection, List<SchemaPath> columns, SessionOptionManager options, MetadataProviderManager metadataProviderManager) throws IOException Description copied from interface:StoragePlugin
Get the physical scan operator for the particular GroupScan (read) node.- Specified by:
getPhysicalScan
in interfaceStoragePlugin
- Overrides:
getPhysicalScan
in classAbstractStoragePlugin
- Parameters:
userName
- User whom to impersonate when reading the contents as part of Scan.selection
- The configured storage engine specific selection.columns
- (optional) The list of column names to scan from the data source.options
- (optional) session optionsmetadataProviderManager
- manager for handling metadata providers- Returns:
- The physical scan operator for the particular GroupScan (read) node.
- Throws:
IOException
-
getOptimizerRules
public Set<? extends org.apache.calcite.plan.RelOptRule> getOptimizerRules(OptimizerRulesContext optimizerContext, PlannerPhase phase) Description copied from interface:StoragePlugin
An implementation of this method will return one or more specialized rules that Drill query optimizer can leverage in physical space. Otherwise, it should return an empty set.- Returns:
- an empty set or a set of plugin specific physical optimizer rules.
-
getConfig
Description copied from interface:StoragePlugin
Method returns a Jackson serializable object that extends a StoragePluginConfig.- Returns:
- an extension of StoragePluginConfig
-
initializeTokenTableForTesting
public void initializeTokenTableForTesting()This function is only used for testing and creates the necessary token tables. Note that the token tables still need to be populated. -
supportsWrite
public boolean supportsWrite()Description copied from interface:StoragePlugin
Indicates if Drill can write a table to this format (e.g. as JSON, csv, etc.).- Specified by:
supportsWrite
in interfaceStoragePlugin
- Overrides:
supportsWrite
in classAbstractStoragePlugin
-
supportsInsert
public boolean supportsInsert()Description copied from interface:StoragePlugin
Indicates if Drill can insert to a table to this plugin.- Specified by:
supportsInsert
in interfaceStoragePlugin
- Overrides:
supportsInsert
in classAbstractStoragePlugin
-
getSheetsService
This method gets (and caches) the Google Service needed for API calls.- Returns:
- An authenticated
Sheets
Google Sheets service.
-
getDriveService
This method gets (and caches) the Google Drive Service needed for mapping Google Sheet names to file tokens.- Parameters:
queryUser
- AString
of the current query user.- Returns:
- A validated and authenticated
Drive
instance.
-