Skip to content
Get Started for Free

Glue

The Glue API in LocalStack for AWS allows you to run ETL (Extract-Transform-Load) jobs locally, maintaining table metadata in the local Glue data catalog, and using the Spark ecosystem (PySpark/Scala) to run data processing workflows.

LocalStack allows you to use the Glue APIs in your local environment. LocalStack uses a container-based Glue job executor, running Glue jobs within a Docker environment (or as pods when deployed on Kubernetes). The supported APIs are available on our API Coverage section, which provides information on the extent of Glue’s integration with LocalStack.

This guide is designed for users new to Glue and assumes basic knowledge of the AWS CLI and our lstk aws command.

Start your LocalStack container using your preferred method. We will demonstrate how to create databases and table metadata in Glue, run Glue ETL jobs, import databases from Athena, and run Glue Crawlers with the AWS CLI.

The commands below illustrate the creation of some very basic entries (databases, tables) in the Glue data catalog:

Terminal window
lstk aws glue create-database --database-input '{"Name":"db1"}'
lstk aws glue create-table --database db1 --table-input '{"Name":"table1"}'
lstk aws glue get-tables --database db1
Output
{
"TableList": [
{
"Name": "table1",
"DatabaseName": "db1"
}
]
}

Create a new PySpark script named job.py with the following code:

from pyspark.sql import SparkSession
def init_spark():
spark = SparkSession.builder.appName("HelloWorld").getOrCreate()
sc = spark.sparkContext
return spark,sc
def main():
spark,sc = init_spark()
nums = sc.parallelize([1,2,3,4])
print(nums.map(lambda x: x*x).collect())
if __name__ == '__main__':
main()

You can now copy the script to an S3 bucket:

Terminal window
lstk aws s3 mb s3://glue-test
lstk aws s3 cp job.py s3://glue-test/job.py

Next, you can create a job definition:

Terminal window
lstk aws glue create-job \
--name job1 \
--role arn:aws:iam::000000000000:role/glue-role \
--command '{"Name": "pythonshell", "ScriptLocation": "s3://glue-test/job.py"}'

You can finally start the job execution:

Terminal window
lstk aws glue start-job-run --job-name job1

The returned JobRunId can be used to query the status job the job execution, until it becomes SUCCEEDED:

Terminal window
lstk aws glue get-job-run --job-name job1 --run-id <JobRunId>
Output
{
"JobRun": {
"Id": "733b76d0",
"Attempt": 1,
"JobRunState": "SUCCEEDED"
}
}

For a more detailed example illustrating how to run a local Glue PySpark job, please refer to this sample repository.

Importing Athena Tables into Glue Data Catalog

Section titled “Importing Athena Tables into Glue Data Catalog”

The Glue data catalog is integrated with Athena, and the database/table definitions can be imported via the import-catalog-to-glue API.

Assume you are running the following Athena queries to create databases and table definitions:

CREATE DATABASE db2
CREATE EXTERNAL TABLE db2.table1 (a1 Date, a2 STRING, a3 INT) LOCATION 's3://test/table1'
CREATE EXTERNAL TABLE db2.table2 (a1 Date, a2 STRING, a3 INT) LOCATION 's3://test/table2'

Then this command will import these DB/table definitions into the Glue data catalog:

Terminal window
lstk aws glue import-catalog-to-glue

Afterwards, the databases and tables will be available in Glue. You can query the databases with the get-databases operation:

Terminal window
lstk aws glue get-databases
Output
{
"DatabaseList": [
...
{
"Name": "db2",
"Description": "Database db2 imported from Athena",
"TargetDatabase": {
"CatalogId": "000000000000",
"DatabaseName": "db2"
}
}
]
}

And you can query the databases with the get-databases operation:

Terminal window
lstk aws glue get-tables --database-name db2
Output
{
"TableList": [
{
"Name": "table1",
"DatabaseName": "db2",
"Description": "Table db2.table1 imported from Athena",
"CreateTime": ...
},
{
"Name": "table2",
"DatabaseName": "db2",
"Description": "Table db2.table2 imported from Athena",
"CreateTime": ...
}
]
}

Glue crawlers allow extracting metadata from structured data sources.

LocalStack Glue currently supports S3 targets (configurable via S3Targets), as well as JDBC targets (configurable via JdbcTargets). Support for other target types is in our pipeline and will be added soon.

The example below illustrates crawling tables and partition metadata from S3 buckets.

You can first create an S3 bucket with a couple of items:

Terminal window
lstk aws s3 mb s3://test
printf "1, 2, 3, 4\n5, 6, 7, 8" > /tmp/file.csv
lstk aws s3 cp /tmp/file.csv s3://test/table1/year=2021/month=Jan/day=1/file.csv
lstk aws s3 cp /tmp/file.csv s3://test/table1/year=2021/month=Jan/day=2/file.csv
lstk aws s3 cp /tmp/file.csv s3://test/table1/year=2021/month=Feb/day=1/file.csv
lstk aws s3 cp /tmp/file.csv s3://test/table1/year=2021/month=Feb/day=2/file.csv

You can then create and trigger the crawler:

Terminal window
lstk aws glue create-database --database-input '{"Name":"db1"}'
lstk aws glue create-crawler \
--name c1 \
--database-name db1 \
--role arn:aws:iam::000000000000:role/glue-role \
--targets '{"S3Targets": [{"Path": "s3://test/table1"}]}'
lstk aws glue start-crawler --name c1

Finally, you can query the table metadata that has been created by the crawler:

Terminal window
lstk aws glue get-tables --database-name db1
Output
{
"TableList": [{
"Name": "table1",
"DatabaseName": "db1",
"PartitionKeys": [ ... ]
...

You can also query the created table partitions:

Terminal window
lstk aws glue get-partitions --database-name db1 --table-name table1
Output
{
"Partitions": [{
"Values": ["2021", "Jan", "1"],
"DatabaseName": "db1",
"TableName": "table1",
...

When using JDBC crawlers, you can point your crawler towards a Redshift database created in LocalStack.

Below is a rough outline of the steps required to get the integration for the JDBC crawler working. You can first create the local Redshift cluster via:

Terminal window
lstk aws redshift create-cluster \
--cluster-identifier c1 \
--node-type dc1.large \
--master-username test \
--master-user-password test \
--db-name db1

The output of this command contains the endpoint address of the created Redshift database:

Output
...
"Endpoint": {
"Address": "localhost.localstack.cloud",
"Port": 4510
},
...

Then you can use any JDBC or Postgres client to create a table mytable1 in the Redshift database, and fill the table with some data.

Next, you’re creating the Glue database, the JDBC connection, as well as the crawler:

Terminal window
lstk aws glue create-database --database-input '{"Name":"gluedb1"}'
lstk aws glue create-connection --connection-input \
{"Name":"conn1","ConnectionType":"JDBC","ConnectionProperties":{"USERNAME":"test","PASSWORD":"test","JDBC_CONNECTION_URL":"jdbc:redshift://localhost.localstack.cloud:4510/db1"}}'
lstk aws glue create-crawler \
--name c1 \
--database-name gluedb1 \
--role arn:aws:iam::000000000000:role/glue-role \
--targets '{"JdbcTargets":[{"ConnectionName":"conn1","Path":"db1/%/mytable1"}]}'
lstk aws glue start-crawler --name c1

Once the crawler has started, you have to wait until the State turns to READY when querying the current state:

Terminal window
lstk aws glue get-crawler --name c1

Once the crawler has finished running and is back in READY state, the Glue table within the gluedb1 DB should have been populated and can be queried via the API.

The Glue Schema Registry allows you to centrally discover, control, and evolve data stream schemas. With the Schema Registry, you can manage and enforce schemas and schema compatibilities in your streaming applications. It integrates nicely with Managed Streaming for Kafka (MSK).

You can create a schema registry with the following command:

Terminal window
lstk aws glue create-registry --registry-name demo-registry

You can create a schema in the newly created registry with the create-schema command:

Terminal window
lstk aws glue create-schema --schema-name demo-schema \
--registry-id RegistryName=demo-registry \
--data-format AVRO \
--compatibility FORWARD \
--schema-definition '{"type":"record","namespace":"Demo","name":"Person","fields":[{"name":"Name","type":"string"}]}'
Output
{
"RegistryName": "demo-registry",
"RegistryArn": "arn:aws:glue:us-east-1:000000000000:file-registry/demo-registry",
"SchemaName": "demo-schema",
"SchemaArn": "arn:aws:glue:us-east-1:000000000000:schema/demo-registry/demo-schema",
"DataFormat": "AVRO",
"Compatibility": "FORWARD",
"SchemaCheckpoint": 1,
"LatestSchemaVersion": 1,
"NextSchemaVersion": 2,
"SchemaStatus": "AVAILABLE",
"SchemaVersionId": "546d3220-6ab8-452c-bb28-0f1f075f90dd",
"SchemaVersionStatus": "AVAILABLE"
}

Once the schema has been created, you can create a new version:

Terminal window
lstk aws glue register-schema-version \
--schema-id SchemaName=demo-schema,RegistryName=demo-registry \
--schema-definition '{"type":"record","namespace":"Demo","name":"Person","fields":[{"name":"Name","type":"string"}, {"name":"Address","type":"string"}]}'
Output
{
"SchemaVersionId": "ee38732b-b299-430d-a88b-4c429d9e1208",
"VersionNumber": 2,
"Status": "AVAILABLE"
}

You can find a more advanced sample in our localstack-pro-samples repository on GitHub, which showcases the integration with AWS MSK and automatic schema registrations (including schema rejections based on the compatibilities).

LocalStack Glue supports Delta Lake, an open-source storage framework that extends Parquet data files with a file-based transaction log for ACID transactions and scalable metadata handling.

To illustrate this feature, we take a closer look at a Glue sample job that creates a Delta Lake table, puts some data into it, and then queries data from the table.

First, we define the PySpark job in a file named job.py (see below). The job first creates a database db1 and table table1, then inserts data into the table via both a dataframe and an INSERT INTO query, and finally fetches the inserted rows via a SELECT query:

from awsglue.context import GlueContext
from pyspark import SparkContext, SparkConf
conf = SparkConf()
conf.set("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
conf.set("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
glue_context = GlueContext(SparkContext.getOrCreate(conf=conf))
spark = glue_context.spark_session
# create database and table
spark.sql("CREATE DATABASE db1")
spark.sql("CREATE TABLE db1.table1 (name string, key long) USING delta PARTITIONED BY (key) LOCATION 's3a://test/data/'")
# create dataframe and write to table in S3
df = spark.createDataFrame([("test1", 123)], ["name", "key"])
df.write.format("delta").options(path="s3a://test/data/") \
.mode("append").partitionBy("key").saveAsTable("db1.table1")
# insert data via 'INSERT' query
spark.sql("INSERT INTO db1.table1 (name, key) VALUES ('test2', 456)")
# get and print results, to run assertions further below
result = spark.sql("SELECT * FROM db1.table1")
print("SQL result:", result.toJSON().collect())

You can now run the following commands to create and start the Glue job:

Terminal window
lstk aws s3 mb s3://test
lstk aws s3 cp job.py s3://test/job.py
lstk aws glue create-job --name job1 --role arn:aws:iam::000000000000:role/test \
--glue-version 4.0 \
--command '{"Name": "pythonshell", "ScriptLocation": "s3://test/job.py"}'
lstk aws glue start-job-run --job-name job1

Retrieve the job run ID from the output of the start-job-run command.

The execution of the Glue job can take a few moments - once the job has finished executing, you should see a log line with the query results in the LocalStack container logs, similar to the output below:

Output
2023-10-17 12:59:20,088 INFO scheduler.DAGScheduler: Job 15 finished: collect at /private/tmp/script-90e5371e.py:28, took 0,158257 s
SQL result: ['{"name":"test1","key":123}', '{"name":"test2","key":456}']

In order to see the logs above, make sure to enable DEBUG=1 in the LocalStack container environment. Alternatively, you can also retrieve the job logs programmatically via the CloudWatch Logs API - for example, using the job run ID from the above command.

Terminal window
lstk aws logs get-log-events \
--log-group-name /aws-glue/jobs/logs-v2 \
--log-stream-name <JobRunId>

The LocalStack Web Application provides a Resource Browser for Glue. You can access the Resource Browser by opening the LocalStack Web Application in your browser, navigating to the Resources section, and then clicking on Glue under the Analytics section.

Glue Resource Browser

The Resource Browser allows you to perform the following actions:

  • Manage Databases: Create, view, and delete databases in your Glue catalog Databases tab.
  • Manage Tables: Create, view, edit, and delete tables in a database in your Glue catalog clicking on the Tables tab.
  • Manage Connections: Create, view, and delete Connections in your Glue catalog by clicking on the Connections tab.
  • Manage Crawlers: Create, view, and delete Crawlers in your Glue catalog by clicking on the Crawlers tab.
  • Manage Jobs: Create, view, and delete Jobs in your Glue catalog by clicking on the Jobs tab.
  • Manage Schema Registries: Create, view, and delete Schema Registries in your Glue catalog by clicking on the Schema Registries tab.
  • Manage Schemas: Create, view, and delete Schemas in your Glue catalog by clicking on the Schemas tab.

The following code snippets and sample applications provide practical examples of how to use Glue in LocalStack for various use cases:

The AWS Glue API is a fairly comprehensive service - more details can be found in the official AWS Glue Developer Guide.

Support for triggers is currently limited - the basic API endpoints are implemented, but triggers are currently still under development (more details coming soon).

109 of 299 operations implemented

Available from the Ultimate plan. Licensing details

Find an API

Search the full operation list, then sort the table to compare current support.

Loading operations…

Verified on Kubernetes
Loading operations…
Complete static API list All 299 operations and their current support status
OperationStatus
AssociateGlossaryTermsNot implemented
BatchCreatePartitionImplemented
BatchDeleteConnectionNot implemented
BatchDeletePartitionImplemented
BatchDeleteTableImplemented
BatchDeleteTableVersionNot implemented
BatchGetBlueprintsNot implemented
BatchGetCrawlersNot implemented
BatchGetCustomEntityTypesNot implemented
BatchGetDataQualityResultNot implemented
BatchGetDataQualityRulesetEvaluationRunNot implemented
BatchGetDevEndpointsNot implemented
BatchGetIterableFormsNot implemented
BatchGetJobsNot implemented
BatchGetPartitionImplemented
BatchGetTableOptimizerNot implemented
BatchGetTriggersNot implemented
BatchGetWorkflowsNot implemented
BatchPutDataQualityStatisticAnnotationNot implemented
BatchStopJobRunNot implemented
BatchUpdatePartitionImplemented
CancelDataQualityRuleRecommendationRunNot implemented
CancelDataQualityRulesetEvaluationRunNot implemented
CancelMLTaskRunNot implemented
CancelStatementNot implemented
CheckSchemaVersionValidityImplemented
CreateBlueprintNot implemented
CreateCatalogImplemented
CreateClassifierImplemented
CreateColumnStatisticsTaskSettingsNot implemented
CreateConnectionImplemented
CreateCrawlerImplemented
CreateCustomEntityTypeNot implemented
CreateDataQualityRulesetNot implemented
CreateDatabaseImplemented
CreateDevEndpointNot implemented
CreateGlossaryNot implemented
CreateGlossaryTermNot implemented
CreateGlueIdentityCenterConfigurationNot implemented
CreateIntegrationNot implemented
CreateIntegrationResourcePropertyNot implemented
CreateIntegrationTablePropertiesNot implemented
CreateJobImplemented
CreateMLTransformNot implemented
CreatePartitionImplemented
CreatePartitionIndexImplemented
CreateRegistryImplemented
CreateSchemaImplemented
CreateScriptNot implemented
CreateSecurityConfigurationImplemented
CreateSessionNot implemented
CreateTableImplemented
CreateTableOptimizerNot implemented
CreateTriggerImplemented
CreateUsageProfileNot implemented
CreateUserDefinedFunctionImplemented
CreateWorkflowImplemented
DeleteAssetNot implemented
DeleteAssetTypeNot implemented
DeleteAttachmentNot implemented
DeleteBlueprintNot implemented
DeleteCatalogImplemented
DeleteClassifierImplemented
DeleteColumnStatisticsForPartitionNot implemented
DeleteColumnStatisticsForTableImplemented
DeleteColumnStatisticsTaskSettingsNot implemented
DeleteConnectionImplemented
DeleteConnectionTypeNot implemented
DeleteCrawlerImplemented
DeleteCustomEntityTypeNot implemented
DeleteDataQualityRulesetNot implemented
DeleteDatabaseImplemented
DeleteDevEndpointNot implemented
DeleteFormTypeNot implemented
DeleteGlossaryNot implemented
DeleteGlossaryTermNot implemented
DeleteGlueIdentityCenterConfigurationNot implemented
DeleteIntegrationNot implemented
DeleteIntegrationResourcePropertyNot implemented
DeleteIntegrationTablePropertiesNot implemented
DeleteJobImplemented
DeleteMLTransformNot implemented
DeletePartitionImplemented
DeletePartitionIndexImplemented
DeleteRegistryImplemented
DeleteResourcePolicyImplemented
DeleteSchemaImplemented
DeleteSchemaVersionsImplemented
DeleteSecurityConfigurationImplemented
DeleteSessionNot implemented
DeleteTableImplemented
DeleteTableOptimizerNot implemented
DeleteTableVersionNot implemented
DeleteTriggerImplemented
DeleteUsageProfileNot implemented
DeleteUserDefinedFunctionImplemented
DeleteWorkflowImplemented
DescribeConnectionTypeNot implemented
DescribeEntityNot implemented
DescribeInboundIntegrationsNot implemented
DescribeIntegrationsNot implemented
DisassociateGlossaryTermsNot implemented
GetAssetNot implemented
GetAssetTypeNot implemented
GetBlueprintNot implemented
GetBlueprintRunNot implemented
GetBlueprintRunsNot implemented
GetCatalogImplemented
GetCatalogImportStatusImplemented
GetCatalogsImplemented
GetClassifierImplemented
GetClassifiersImplemented
GetColumnStatisticsForPartitionNot implemented
GetColumnStatisticsForTableImplemented
GetColumnStatisticsTaskRunNot implemented
GetColumnStatisticsTaskRunsNot implemented
GetColumnStatisticsTaskSettingsNot implemented
GetConnectionImplemented
GetConnectionsImplemented
GetCrawlerImplemented
GetCrawlerMetricsNot implemented
GetCrawlersImplemented
GetCustomEntityTypeNot implemented
GetDashboardUrlNot implemented
GetDataCatalogEncryptionSettingsNot implemented
GetDataCatalogExportConfigurationNot implemented
GetDataQualityModelNot implemented
GetDataQualityModelResultNot implemented
GetDataQualityResultNot implemented
GetDataQualityRuleRecommendationRunNot implemented
GetDataQualityRulesetNot implemented
GetDataQualityRulesetEvaluationRunNot implemented
GetDatabaseImplemented
GetDatabasesImplemented
GetDataflowGraphNot implemented
GetDevEndpointNot implemented
GetDevEndpointsNot implemented
GetEntityRecordsNot implemented
GetFormTypeNot implemented
GetGlossaryNot implemented
GetGlossaryTermNot implemented
GetGlueIdentityCenterConfigurationNot implemented
GetIntegrationResourcePropertyNot implemented
GetIntegrationTablePropertiesNot implemented
GetJobImplemented
GetJobBookmarkNot implemented
GetJobRunImplemented
GetJobRunsImplemented
GetJobsImplemented
GetMLTaskRunNot implemented
GetMLTaskRunsNot implemented
GetMLTransformNot implemented
GetMLTransformsNot implemented
GetMappingNot implemented
GetMaterializedViewRefreshTaskRunNot implemented
GetPartitionImplemented
GetPartitionIndexesImplemented
GetPartitionsImplemented
GetPlanNot implemented
GetRegistryImplemented
GetResourcePoliciesNot implemented
GetResourcePolicyImplemented
GetSchemaImplemented
GetSchemaByDefinitionImplemented
GetSchemaVersionImplemented
GetSchemaVersionsDiffImplemented
GetSecurityConfigurationImplemented
GetSecurityConfigurationsImplemented
GetSessionNot implemented
GetSessionEndpointNot implemented
GetStatementNot implemented
GetTableImplemented
GetTableOptimizerNot implemented
GetTableVersionImplemented
GetTableVersionsImplemented
GetTablesImplemented
GetTagsImplemented
GetTriggerImplemented
GetTriggersImplemented
GetUnfilteredPartitionMetadataNot implemented
GetUnfilteredPartitionsMetadataNot implemented
GetUnfilteredTableMetadataNot implemented
GetUsageProfileNot implemented
GetUserDefinedFunctionImplemented
GetUserDefinedFunctionsImplemented
GetWorkflowImplemented
GetWorkflowRunNot implemented
GetWorkflowRunPropertiesNot implemented
GetWorkflowRunsNot implemented
ImportCatalogToGlueImplemented
ListAssetTypesNot implemented
ListBlueprintsNot implemented
ListColumnStatisticsTaskRunsNot implemented
ListConnectionTypesNot implemented
ListCrawlersImplemented
ListCrawlsImplemented
ListCustomEntityTypesNot implemented
ListDataQualityResultsNot implemented
ListDataQualityRuleRecommendationRunsNot implemented
ListDataQualityRulesetEvaluationRunsNot implemented
ListDataQualityRulesetsNot implemented
ListDataQualityStatisticAnnotationsNot implemented
ListDataQualityStatisticsNot implemented
ListDevEndpointsNot implemented
ListEntitiesNot implemented
ListFormTypesNot implemented
ListGlossariesNot implemented
ListGlossaryTermsNot implemented
ListIntegrationResourcePropertiesNot implemented
ListIterableFormsNot implemented
ListJobsImplemented
ListMLTransformsNot implemented
ListMaterializedViewRefreshTaskRunsNot implemented
ListRegistriesImplemented
ListSchemaVersionsImplemented
ListSchemasImplemented
ListSessionsNot implemented
ListStatementsNot implemented
ListTableOptimizerRunsNot implemented
ListTriggersNot implemented
ListUsageProfilesNot implemented
ListWorkflowsImplemented
ModifyIntegrationNot implemented
PutAssetNot implemented
PutAssetTypeNot implemented
PutAttachmentNot implemented
PutDataCatalogEncryptionSettingsNot implemented
PutDataCatalogExportConfigurationNot implemented
PutDataQualityProfileAnnotationNot implemented
PutFormTypeNot implemented
PutResourcePolicyImplemented
PutSchemaVersionMetadataImplemented
PutWorkflowRunPropertiesNot implemented
QuerySchemaVersionMetadataImplemented
RegisterConnectionTypeNot implemented
RegisterSchemaVersionImplemented
RemoveSchemaVersionMetadataImplemented
ResetJobBookmarkNot implemented
ResumeWorkflowRunNot implemented
RunStatementNot implemented
SearchAssetsNot implemented
SearchTablesNot implemented
StartBlueprintRunNot implemented
StartColumnStatisticsTaskRunNot implemented
StartColumnStatisticsTaskRunScheduleNot implemented
StartCrawlerImplemented
StartCrawlerScheduleNot implemented
StartDataQualityRuleRecommendationRunNot implemented
StartDataQualityRulesetEvaluationRunNot implemented
StartExportLabelsTaskRunNot implemented
StartImportLabelsTaskRunNot implemented
StartJobRunImplemented
StartMLEvaluationTaskRunNot implemented
StartMLLabelingSetGenerationTaskRunNot implemented
StartMaterializedViewRefreshTaskRunNot implemented
StartTriggerImplemented
StartWorkflowRunNot implemented
StopColumnStatisticsTaskRunNot implemented
StopColumnStatisticsTaskRunScheduleNot implemented
StopCrawlerImplemented
StopCrawlerScheduleNot implemented
StopMaterializedViewRefreshTaskRunNot implemented
StopSessionNot implemented
StopTriggerImplemented
StopWorkflowRunNot implemented
TagResourceImplemented
TestConnectionNot implemented
UntagResourceImplemented
UpdateAssetNot implemented
UpdateBlueprintNot implemented
UpdateCatalogNot implemented
UpdateClassifierImplemented
UpdateColumnStatisticsForPartitionNot implemented
UpdateColumnStatisticsForTableImplemented
UpdateColumnStatisticsTaskSettingsNot implemented
UpdateConnectionImplemented
UpdateCrawlerImplemented
UpdateCrawlerScheduleNot implemented
UpdateDataQualityRulesetNot implemented
UpdateDatabaseImplemented
UpdateDevEndpointNot implemented
UpdateGlossaryNot implemented
UpdateGlossaryTermNot implemented
UpdateGlueIdentityCenterConfigurationNot implemented
UpdateIntegrationResourcePropertyNot implemented
UpdateIntegrationTablePropertiesNot implemented
UpdateJobImplemented
UpdateJobFromSourceControlNot implemented
UpdateMLTransformNot implemented
UpdatePartitionImplemented
UpdateRegistryImplemented
UpdateSchemaImplemented
UpdateSourceControlFromJobNot implemented
UpdateTableImplemented
UpdateTableOptimizerNot implemented
UpdateTriggerImplemented
UpdateUsageProfileNot implemented
UpdateUserDefinedFunctionImplemented
UpdateWorkflowImplemented
Was this page helpful?