Functions/Set-LocalNotebook.ps1
function Set-LocalNotebook ($databricksURI, $DatabricksFile, $Language, $LocalOutputPath, $Format = "SOURCE") { $DatabricksFileForUrl = Format-DataBricksFileName -DataBricksFile $DatabricksFile $uri = "$databricksURI/api/2.0/workspace/export?path=" + $DatabricksFileForUrl + "&format=$Format&direct_download=true" switch ($Format) { "SOURCE" { $FileExtentions = @{"PYTHON" = ".py"; "SCALA" = ".scala"; "SQL" = ".sql"; "R" = ".r" } $FileExt = $FileExtentions[$Language] } "HTML" { $FileExt = ".html" } "JUPYTER" { $FileExt = ".ipynb" } "DBC" { $FileExt = ".dbc" } } $LocalExportPath = $DatabricksFile.Replace($ExportPath + "/", "") + $FileExt $tempLocalExportPath = $DatabricksFile.Replace($ExportPath + "/", "") + ".temp" + $FileExt $LocalExportPath = Join-Path $LocalOutputPath $LocalExportPath $tempLocalExportPath = Join-Path $LocalOutputPath $tempLocalExportPath New-Item -Force -path $tempLocalExportPath -Type File | Out-Null $Headers = GetHeaders $null Try { # Databricks exports with a comment line in the header, remove this and ensure we have Windows line endings Invoke-RestMethod -Method Get -Uri $uri -Headers $Headers -OutFile $tempLocalExportPath $Response = Get-Content $tempLocalExportPath -Encoding UTF8 if ($response.count -eq 0) { $Response = $response.Replace("# Databricks notebook source", " ") } else { $response = $response | Select-Object -Skip 1 } Remove-Item $tempLocalExportPath if ($Format -eq "SOURCE") { $Response = ($Response.replace("[^`r]`n", "`r`n") -Join "`r`n") } Write-Verbose "Creating file $LocalExportPath" New-Item -force -path $LocalExportPath -value $Response -type file | out-null } Catch { Write-Error $_.ErrorDetails.Message Throw } } |