home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

4 rows where issue = 346028655 sorted by updated_at descending

✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date)

user 1

  • simonw 4

issue 1

  • Ability to display facet counts for many-to-many relationships · 4 ✖

author_association 1

  • OWNER 4
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
495931140 https://github.com/simonw/datasette/issues/356#issuecomment-495931140 https://api.github.com/repos/simonw/datasette/issues/356 MDEyOklzc3VlQ29tbWVudDQ5NTkzMTE0MA== simonw 9599 2019-05-25T16:30:59Z 2019-05-25T16:30:59Z OWNER

I went with a much more simple URL scheme: ?_facet_m2m=destination_table (it then figures out which the middle table is by looking at the foreign keys).

This can be extended to be more complicated in the future if needed.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ability to display facet counts for many-to-many relationships 346028655  
495931078 https://github.com/simonw/datasette/issues/356#issuecomment-495931078 https://api.github.com/repos/simonw/datasette/issues/356 MDEyOklzc3VlQ29tbWVudDQ5NTkzMTA3OA== simonw 9599 2019-05-25T16:30:09Z 2019-05-25T16:30:09Z OWNER

Implemented in https://github.com/simonw/datasette/commit/d923d847545e829bf946bb9170bebfc7c3f9d993

Documentation here: https://datasette.readthedocs.io/en/latest/facets.html#facet-by-many-to-many

Demo here: https://latest.datasette.io/fixtures/roadside_attractions

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ability to display facet counts for many-to-many relationships 346028655  
482620313 https://github.com/simonw/datasette/issues/356#issuecomment-482620313 https://api.github.com/repos/simonw/datasette/issues/356 MDEyOklzc3VlQ29tbWVudDQ4MjYyMDMxMw== simonw 9599 2019-04-12T15:35:44Z 2019-04-12T15:35:44Z OWNER

One question here is how these facets should be defined in the table page query string.

427 started exploring this.

For any m2m facet we need to know:

  • what is the join table?
  • how is the join table related to our current table?
  • what is the table on the other side of the relationship?
  • how does that table relate to the join table?
  • how should that table be displayed (what's the label column)?

The simplest form of m2m relationship can be automatically derived from just knowing the table. We can support that like so:

?_facet_m2m=tagged

This could work automatically if the following constraints turn out to apply:

  • the tagged table has a foreign key back to our table, against our primary key
  • the tagged table has a single other foreign key to one other table
  • that other table has a single text column we can use as the label (or has a label column defined in metadata)

If any of the above rules don't hold, I think the solution is to have explicit configuration. Per #427 this will likely be done using JSON in the query string. Something like this (would be one line but indented for readability):

?_facet_m2m={ "through":"tagged", "through_fk_us":"tree_id", "other":"tags", "through_fk_other":"tag_id", "other_label": "tag" }

Probably also need a way of specifying the outbound column used on both us and other - if the m2m table isn't linking to the foreign keys.

I don't yet like the names of the above keys.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ability to display facet counts for many-to-many relationships 346028655  
409088967 https://github.com/simonw/datasette/issues/356#issuecomment-409088967 https://api.github.com/repos/simonw/datasette/issues/356 MDEyOklzc3VlQ29tbWVudDQwOTA4ODk2Nw== simonw 9599 2018-07-31T04:14:44Z 2018-07-31T04:14:44Z OWNER

Here's the query I'm playing with for facet counts:

https://datasette-m2m-work-in-progress.now.sh/russian-ads-e8e09e2?sql=select+target_id%2C+count%28*%29+as+n+from+ad_targets%0D%0Awhere%0D%0A++target_id+not+in+%28%22ec3ac%22%2C+%22e128e%22%29%0D%0A++and+ad_id+in+%28select+ad_id+from+ad_targets+where+target_id+%3D+%22ec3ac%22%29%0D%0A++and+ad_id+in+%28select+ad_id+from+ad_targets+where+target_id+%3D+%22e128e%22%29%0D%0Agroup+by+target_id+order+by+n+desc%3B

select target_id, count(*) as n from ad_targets where target_id not in ("ec3ac", "e128e") and ad_id in (select ad_id from ad_targets where target_id = "ec3ac") and ad_id in (select ad_id from ad_targets where target_id = "e128e") group by target_id order by n desc;

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
Ability to display facet counts for many-to-many relationships 346028655  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 17.199ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows