{"id":13795161,"url":"https://github.com/yahoo/fili","last_synced_at":"2025-10-10T15:36:45.947Z","repository":{"id":9314221,"uuid":"60879636","full_name":"yahoo/fili","owner":"yahoo","description":"Easily make RESTful web services for time series reporting with Big Data analytics engines like Druid and SQL Databases.","archived":false,"fork":false,"pushed_at":"2023-07-19T19:33:35.000Z","size":12624,"stargazers_count":175,"open_issues_count":291,"forks_count":96,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-10-10T15:36:43.013Z","etag":null,"topics":["analytics","big-data","druid","featured","fili","restful-api","web","webservice"],"latest_commit_sha":null,"homepage":"http://fili.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yahoo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-06-10T22:07:59.000Z","updated_at":"2025-07-26T17:50:23.000Z","dependencies_parsed_at":"2023-09-24T07:17:43.079Z","dependency_job_id":null,"html_url":"https://github.com/yahoo/fili","commit_stats":{"total_commits":942,"total_committers":68,"mean_commits":"13.852941176470589","dds":0.8418259023354565,"last_synced_commit":"f86b004ecbdc9ef2bf568f4838b04e57a4ba4535"},"previous_names":[],"tags_count":629,"template":false,"template_full_name":null,"purl":"pkg:github/yahoo/fili","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Ffili","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Ffili/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Ffili/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Ffili/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yahoo","download_url":"https://codeload.github.com/yahoo/fili/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2Ffili/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004569,"owners_count":26083736,"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-10-10T02:00:06.843Z","response_time":62,"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":["analytics","big-data","druid","featured","fili","restful-api","web","webservice"],"created_at":"2024-08-03T23:00:52.807Z","updated_at":"2025-10-10T15:36:45.899Z","avatar_url":"https://github.com/yahoo.png","language":"Java","readme":"Fili \n====\n\n*Read this in other languages: [中文](./translations/zh/README-zh.md).*\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.yahoo.bard/fili/badge.svg?style=plastic)](https://maven-badges.herokuapp.com/maven-central/com.yahoo.bard/fili/)\n[![Gitter](https://img.shields.io/gitter/room/yahoo/fili.svg?maxAge=2592000)](https://gitter.im/yahoo/fili) \n[![Screwdriver](https://cd.screwdriver.cd/pipelines/6154/badge)](https://cd.screwdriver.cd/pipelines/6154) \n[![Codacy grade](https://img.shields.io/codacy/grade/91fa6c38f25d4ea0ae3569ee70a33e38.svg?maxAge=21600)](https://www.codacy.com/app/Fili/fili/dashboard) \n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=yahoo_fili\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=yahoo_fili)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=yahoo_fili\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=yahoo_fili) \n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=yahoo_fili\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=yahoo_fili) \n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=yahoo_fili\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=yahoo_fili)\n\n**The Fili groupId has been changed from com.yahoo.fili to com.yahoo.bard.**\n\nFili is a Java-based framework that makes it easy to build and maintain RESTful web services for time series reporting \nand analytics. Fili's HTTP GET-based [reporting API](docs/end-user-api.md) is clean and user-friendly, hiding the \ncomplexities of [complicated metric and dimension definition](docs/configuring-metrics.md), data storage, and query \noptimization from end-users. Designed with Big Data and scalability in mind, Fili has first-class support for\n[Druid](http://druid.io) as a back-end, but Fili's flexible pipeline-style architecture can handle nearly any back-end\nfor data storage.\n\nFili exposes the same core concepts that all time series reporting and analytics systems expose:\n\n- [Metrics](docs/end-user-api.md#metrics)\n- [Dimensions](docs/end-user-api.md#dimensions)\n- [Tables](docs/end-user-api.md#tables)\n- Time ([Reporting Time Grain](docs/end-user-api.md#time-grain) and [Interval](docs/end-user-api.md#interval))\n\nOther systems expose additional concepts like Views, Partitions, and metric formulas, but Fili chooses not to expose\nend-users to those low-level concerns. By limiting the mental model of Fili's API to just these core domain concepts, \nFili's API allows end-users to better extract business value by focusing on finding answers to the _what_ and _why_ \nquestions from their data, rather than on _how_ to ask their question. \n\nFili's [simple and clear API](docs/end-user-api.md) lets users focus on their business-driven questions, and the Fili\nlibrary takes care of figuring out how to best answer the question for them. \n\nThis simplicity also allows for a huge amount of flexibility around where data is stored and how it's queried and \nretrieved from back-end systems. Having such flexibility allows those maintaining a web service built with Fili to move\ndata around, better optimize queries, and even swap out entire back-end systems without breaking their end-users or \nforcing them to go through a painful migration.\n\nFili also provides a plethora of other capabilities. Here are some of them:\n\n| Functionality                                   | Operability                                        |\n|-------------------------------------------------|----------------------------------------------------|\n| Complex metric definition                       | Rate limiting                                      |\n| Performance slice routing                       | Query weight checks                                | \n| Dimension joins (both annotation and filtering) | [Rich usage metrics](monitoring-and-operations.md) |\n| Partial interval protection                     | Health checks                                      |\n| Volatile data handling                          | Caching                                            |\n| Modular architecture                            |                                                    |\n\n\nCommunity [![Gitter](https://img.shields.io/gitter/room/yahoo/fili.svg?maxAge=2592000)](https://gitter.im/yahoo/fili) [![Users Google Group](https://img.shields.io/badge/google_group-users-blue.svg?maxAge=2592000)](https://groups.google.com/forum/#!forum/fili-users) [![Developers Google Group](https://img.shields.io/badge/google_group-developers-blue.svg?maxAge=2592000)](https://groups.google.com/forum/#!forum/fili-developers)\n----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\nThe Fili community generally hangs out [on Gitter](https://gitter.im/yahoo/fili), so please drop by if you have any \nquestions, comments, concerns, wishes, hopes, dreams, wants, needs, yearnings, musings, or idle curiosities about Fili.\nThe core Fili developers love meeting new people and talking with them about how they can best use Fili to solve their\nBig Data time series reporting and analytics problems. We know there are gaps in Fili, and definitely lots of new, \npowerful capabilities to add, so hearing about what's working and what could be better will help drive the direction of\nFili.\n\nIf you have other thoughts, or are running into trouble and are not able to get help from the community on Gitter,\nplease [open an issue](https://github.com/yahoo/fili/issues) describing your problem or idea. \n\nIf you would like to get involved with Fili development, check out the [CONTRIBUTING](CONTRIBUTING.md) file.\n\n\nQuick Start\n-----------\n\nFili comes with a pre-configured [example application](fili-wikipedia-example) to help you get started and serve as a \njumping-off-point for building your own web service using Fili. The example application lets you report on Wikipedia\narticle edit information, and picks up where [Druid's quick-start tutorial](http://druid.io/docs/0.9.1.1/tutorials/quickstart.html)\nleaves off.   \n\n\nVersioning\n----------\n\nFili is stable and production-ready today, but the codebase is still under active development, with many large-scale\nchanges and new features being worked on or planned for the future. \n \nActive development happens on the patch version of the highest minor version. \n\n### @Deprecated\n\nAPIs marked with the `@Deprecated` annotation are planned for removal in upcoming releases. Deprecated APIs will be \nsupported for 1 stable release beyond the release in which they were deprecated, but it is strongly recommended to stop \nusing them. After deprecated APIs are no longer supported, they may be removed at any time.\n\n\nBinaries (How to Get It)\n------------------------\n\nBinaries for Fili are stored in [Maven Central](https://search.maven.org/search?q=com.yahoo.bard). Dependency information for Maven, Ivy,\nand Gradle can be found at https://search.maven.org/search?q=com.yahoo.bard, and some examples are below.\n\nMaven:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.yahoo.bard\u003c/groupId\u003e\n    \u003cartifactId\u003efili\u003c/artifactId\u003e\n    \u003cversion\u003ex.y.z\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003crepository\u003e\n    \u003cid\u003efili\u003c/id\u003e\n    \u003curl\u003ehttps://repo1.maven.org/maven2\u003c/url\u003e\n\u003c/repository\u003e\n```\n\nGradle:\n```groovy\nrepositories {\n    maven { url 'https://repo1.maven.org/maven2' }\n}\n\ndependencies {\n    compile 'com.yahoo.bard:fili:x.y.z'\n}\n```\n\nExtending\n---------\n\nFili's easy to extend! It has a bunch of hooks already ([`AbstractBinderFactory`](https://github.com/yahoo/fili/blob/master/fili-core/src/main/java/com/yahoo/bard/webservice/application/AbstractBinderFactory.java))! \nThere's a module system for config and modules depending on other modules! There's lots more to say here, but the time\nthe time, look at the time!\n\n\nDocumentation\n-------------\n\nMore information about Fili can be found at [fili.io](http://fili.io).\n\n\nContributing [![Developers Google Group](https://img.shields.io/badge/google_group-developers-blue.svg?maxAge=2592000)](https://groups.google.com/forum/#!forum/fili-developers)\n------------\n\nMore details can be found in the [CONTRIBUTING](CONTRIBUTING.md) file.\n\n\nLICENSE\n-------\n\nCopyright 2016 Yahoo! Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the \nLicense. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific\nlanguage governing permissions and limitations under the License.\n","funding_links":[],"categories":["数据科学"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Ffili","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahoo%2Ffili","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Ffili/lists"}