{"id":30355833,"url":"https://github.com/the-strategy-unit/azkit","last_synced_at":"2026-01-05T14:26:14.507Z","repository":{"id":305920942,"uuid":"1024396316","full_name":"The-Strategy-Unit/azkit","owner":"The-Strategy-Unit","description":"R package to handle Azure authentication and basic tasks with blob storage","archived":false,"fork":false,"pushed_at":"2025-08-01T16:53:16.000Z","size":23,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T14:48:17.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Strategy-Unit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-22T16:23:11.000Z","updated_at":"2025-08-01T10:52:25.000Z","dependencies_parsed_at":"2025-07-22T18:27:15.901Z","dependency_job_id":null,"html_url":"https://github.com/The-Strategy-Unit/azkit","commit_stats":null,"previous_names":["the-strategy-unit/azkit"],"tags_count":0,"template":false,"template_full_name":"The-Strategy-Unit/template-repository","purl":"pkg:github/The-Strategy-Unit/azkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Strategy-Unit%2Fazkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Strategy-Unit%2Fazkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Strategy-Unit%2Fazkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Strategy-Unit%2Fazkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Strategy-Unit","download_url":"https://codeload.github.com/The-Strategy-Unit/azkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Strategy-Unit%2Fazkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271103202,"owners_count":24699646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-19T05:15:52.701Z","updated_at":"2026-01-05T14:26:14.501Z","avatar_url":"https://github.com/The-Strategy-Unit.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `{azkit}` 🌊🔑📂📦![R](https://www.r-project.org/favicon-32x32.png)\n\n\u003c!-- badges: start --\u003e\n[![License: MIT][mit_svg]](https://opensource.org/licenses/MIT)\n[![Project Status: WIP – Initial development is in progress, but there\nhas not yet been a stable release][repostatus_svg]][repostatus_info]\n[![Lifecycle: experimental][lifecycle_svg]][lifecycle]\n![GitHub R package version][gh_ver]\n[![R CMD check status][cmd_svg]][cmd_yaml]\n\n[mit_svg]: https://img.shields.io/badge/License-MIT-yellow.svg\n[gh_ver]: https://img.shields.io/github/r-package/v/The-Strategy-Unit/azkit\n[repostatus_info]: https://www.repostatus.org/#project-statuses\n[repostatus_svg]: https://www.repostatus.org/badges/latest/wip.svg\n[lifecycle]: https://lifecycle.r-lib.org/articles/stages.html#experimental\n[lifecycle_svg]: https://img.shields.io/badge/lifecycle-experimental-orange.svg\n[cmd_svg]: https://github.com/The-Strategy-Unit/azkit/actions/workflows/R-CMD-check.yaml/badge.svg\n[cmd_yaml]: https://github.com/The-Strategy-Unit/azkit/actions/workflows/R-CMD-check.yaml\n\u003c!-- badges: end --\u003e\n\n\u003cimg src=\"man/figures/logo.png\" align=\"right\" height=\"138\" alt=\"azkit badge\" /\u003e\nR package to handle Azure authentication and basic tasks with blob storage.\n\n## Status\n\nThe package is in development.\nPlease leave an issue or raise a pull request if you have ideas for its\nimprovement.\n\n## Installation\n\nYou can install the development version of `{azkit}` with:\n\n``` r\n# install.packages(\"pak\")\npak::pak(\"The-Strategy-Unit/azkit\")\n```\n\n## Usage\n\nA primary function in `{azkit}` enables access to an Azure blob container:\n\n```r\ndata_container \u003c- azkit::get_container()\n\n```\nAuthentication is handled \"under the hood\" by the `get_container()` function,\nbut if you need to, you can explicitly return an authentication token for\ninspection or testing:\n\n```r\nmy_token \u003c- azkit::get_auth_token()\n\n```\n\nThe container returned will be set by the name stored in the `AZ_CONTAINER`\nenvironment variable, if any, by default, but you can override this by supplying\na container name to the function:\n\n```r\ncustom_container \u003c- azkit::get_container(\"custom\")\n```\n\nReturn a list of all available containers in your default Azure storage with:\n\n```r\nlist_container_names()\n```\n\nOnce you have access to a container, you can use one of a set of data reading\nfunctions to bring data into R from `.parquet`, `.rds`, `.json` or `.csv` files:\n\n```r\npqt_data \u003c- azkit::read_azure_parquet(data_container, \"v_important_data\")\n\n```\n\nThe functions will try to match a file of the required type using the `file`\nname supplied. In the case above, \"v_important_data\" would match a file named\n\"v_important_data.parquet\", no need to supply the file extension.\n\nBy default the `read_*` functions will look in the root folder of the container.\nTo specify a subfolder, supply this to the `path` argument.\nThe functions will _not_ search recursively into further subfolders, so the path\nneeds to be full and accurate.\n\nOr you may have \"long\" filenames that include the full notional path to the\nfile, in which case you can ignore the \"path\" argument.\nLong filenames are returned by `azkit::list_files()`, for example.\n\n```r\nazkit::list_files(data_container, \"data/latest\", \"parquet\") |\u003e\n  purrr::map(\\(x) azkit::read_azure_parquet(data_container, x, info = FALSE))\n```\n\nIf there is more than 1 file matching the string supplied to `file` argument,\nthe functions will throw an error.\nSpecifying the exact filename will avoid this of course - but shorter `file`\narguments may be convenient in some situations.\n\nCurrently these functions only read in a single file at a time.\n\nSetting the `info` argument to `TRUE` will enable the functions to give some\nconfirmatory feedback on what file is being read in.\nYou can also pass through arguments that will be applied to, for example,\n`readr::read_delim()`, such as `col_types`, as the function reads in a CSV file:\n\n```r\ncsv_data \u003c- data_container |\u003e\n  azkit::read_azure_csv(\"vital_data.csv\", path = \"data\", col_types = \"ccci\")\n\n```\n\n## Environment variables\n\nTo access Azure Storage you will want to set some environment variables.\nThe neatest way to do this is to include a [`.Renviron` file][posit_env] in\nyour project folder.\n\n⚠️These values are sensitive and should not be exposed to anyone outside The\nStrategy Unit.\nMake sure you include `.Renviron` in [the `.gitignore` file][github] for\nyour project.\n\nYour `.Renviron` file should contain the variables below.\nAsk a member of [the Data Science team][suds] for the necessary values.\n\n```\n# essential\nAZ_STORAGE_EP=\n# useful but not absolutely essential:\nAZ_CONTAINER=\n\n# optional, for certain authentication scenarios:\nAZ_TENANT_ID=\nAZ_CLIENT_ID=\nAZ_APP_SECRET=\n```\n\nThese may vary depending on the specific container you’re connecting to.\n\nFor one project you might want to set the default container (`AZ_CONTAINER`) to\none value, but for a different project you might be mainly working with a\ndifferent container so it would make sense to set the values within the\n`.Renviron` file for each project, rather than globally for your account.\n\n## Getting help\n\nPlease use the [Issues][issues] feature on GitHub to report any bugs, ideas\nor problems, including with the package documentation.\n\nAlternatively, to ask any questions about the package you may contact\n[Fran Barton](mailto:francis.barton@nhs.net).\n\n## Development\n\nIf you wish to clone this package for development, including running the\nincluded tests, you will want some further environment variables for your local\n`.Renviron`. Contact Fran if you need help with this.\n\n[posit_env]: https://docs.posit.co/ide/user/ide/guide/environments/r/managing-r.html#renviron\n[github]: https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files\n[suds]: https://the-strategy-unit.github.io/data_science/about.html\n[issues]: https://github.com/The-Strategy-Unit/azkit/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-strategy-unit%2Fazkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-strategy-unit%2Fazkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-strategy-unit%2Fazkit/lists"}